我有一个名为“最喜欢的”的mongodb系列。该集合的架构如下:
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);
现在我需要的是找到具有特定的postBy的确切文档,并且需要在数组字段菜肴中插入值。我的代码如下所示
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'未定义的。 请帮忙。
答案 0 :(得分:2)
favorite
是一组最喜欢的文档,因为您使用的是find
。您希望在此处使用findOne
,以便favorite
是您要更新的单个文档。
Favorites.findOne({ postedBy : req.decoded._doc._id }, function(err,favorite){
favorite.dishes.push(req.body._id);
favorite.save(function(err,favorite) { ...