【发布时间】:2018-06-12 18:44:43
【问题描述】:
我想将我的 car 对象数组保存到我在猫鼬中的 user.cars 字段中。
我的用户架构如下所示:
const UserSchema = new Schema({
firstName: {
type: String,
required: true
},
lastName: {
type: String,
required: true
},
cars: [{
type: Array,
required: false
}]
})
我将用户汽车保存在汽车端点上,如下所示:
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))
})
我的 req.body 日志如下所示:
{ cars: [
{
type: 'Sedan',
make: 'BMW',
model: '525i',
[...]
},
{
type: 'Coupe',
make: 'Subaru',
model: 'BRZ',
[...]
},
{
type: 'SUV',
make: 'Toyota',
model: 'Rav4',
[...]
}
]
}
此代码有效,但 mongoose 将数据保存为新数组,因此看起来像这样:
{ user.cars: [
[
{car},
{car},
...
]
]}
但我想将 user.cars 作为对象数组获取,而不是将新数组传递给汽车。
非常感谢您帮助我找到代码中的错误位置。
【问题讨论】:
-
在
user.cars = req.body.cars之前发布您的完整代码 -
我发布了完整的端点代码@Ashish