Javascript 使用Node.JS Mongoose查找文档并将值插入MongoDB中的数组
我有一个名为“favorite”的mongodb集合,该集合的模式如下:Javascript 使用Node.JS Mongoose查找文档并将值插入MongoDB中的数组,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我有一个名为“favorite”的mongodb集合,该集合的模式如下: var favoritesSchema = new Schema({ postedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, dishes:[ { type: mongoose.Schema.T
var favoritesSchema = new Schema({
postedBy: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
dishes:[
{
type: mongoose.Schema.Types.ObjectId,
ref: 'Dish'
}
]
},
{timestamps:true}
);
var favoritesModel = mongoose.model('Favorite',favoritesSchema);
现在我需要的是找到具有特定postedBy的确切文档,并需要向数组字段插入值。我的代码如下所示
Favorites.find({ postedBy : req.decoded._doc._id },function(err,favorite){
favorite.dishes.push(req.body._id);
favorite.save(function(err,favorite)
{
if(err) throw err;
console.log('favorite updated');
res.json(favorite);
});
}
});
但是,此操作失败,TypeError:无法读取未定义的属性“push”。
请提供帮助。
收藏
是收藏文档的数组,因为您正在使用查找
。您希望在此处使用findOne
,以便favorite
是您要更新的单个文档
Favorites.findOne({ postedBy : req.decoded._doc._id }, function(err,favorite){
favorite.dishes.push(req.body._id);
favorite.save(function(err,favorite) { ...
我需要提取由同一个人完成的所有帖子,并将其扔给用户。这是为了让他选择需要编辑的记录,然后只对该记录进行更改。如果我仍然使用find而不是findOne,我需要做哪些更改?