mongoose:没有保存的对象数组
我正在尝试添加对象id到数组中(mongoose)(Node.js)。 这是我的代码:
app.post('/api/users/:userId/favorites/:objectId', function(req, res, next) { User.findByIdAndUpdate(req.params.userId, {$addToSet: {user_favorites: req.params.objectId}}, {safe: true, upsert: true}, function(err, data){ if (err) return res.status(500).send(err) res.status(200).send({'message':'saved'}); }) })
这是我的模型:
module.exports = mongoose.model('User',{ ... user_favorites: [{ type: mongoose.Types.ObjectId, ref: 'Property' }], ... })
没有错误被返回,但是ID不被添加到数组中。 我错过了什么?
你忘了“新”选项。 .find**Update()
方法在默认情况下将其closures,这与root方法.findAndModfiy()
具有相同的行为:
User.findByIdAndUpdate( req.params.userId, { "$addToSet": { "user_favorites": req.params.objectId }, { "upsert": true, "new": true }, function(err, data){ if (err) return res.status(500).send(err) res.status(200).send({'message':'saved'}); } )
因此,文档实际上是在数据库中更新的,但没有“新”,那么你得到的原始文件find,而不是修改后的。
另外,无论你从哪里学习,“安全”选项都被弃用了很长一段时间。 所有的写入关注设置默认为已确认,这是该设置应该代表什么。