I want to save my array of car object to my user.cars field in mongoose.
My User Schema looks like this:
const UserSchema = new Schema({
firstName: {
type: String,
required: true
},
lastName: {
type: String,
required: true
},
cars: [{
type: Array,
required: false
}]
})
I'm saving user cars on cars endpoint like this:
router.route('/cars')
.post(async function (req, res) {
User.findById(req.user._id)
.then((user, err) => {
if (err) {
return res.json({err})
}
if (user && user._id) {
user.cars = req.body.cars
user.save(function (err) {
if (err) {
res.status(500)
return res.json({
success: false,
message: err.message || 'Update failed'
})
}
ioServer.sockets.emit('update-users')
res.status(200).json({
success: true,
message: 'User updated successfully'
})
})
} else {
return res.json({message: 'No user', success: false})
}
})
.catch(err => console.log(err))
})
My req.body log looks like:
{ cars: [
{
type: 'Sedan',
make: 'BMW',
model: '525i',
[...]
},
{
type: 'Coupe',
make: 'Subaru',
model: 'BRZ',
[...]
},
{
type: 'SUV',
make: 'Toyota',
model: 'Rav4',
[...]
}
]
}
This code works, but mongoose save data as a new array, so it looks like this:
{ user.cars: [
[
{car},
{car},
...
]
]}
But I want to get user.cars as a array of objects instead of passing new array into cars.
Many thanks for help with find where I did a mistake in my code.
user.cars = req.body.cars