我是MongoDB的新手并使用Mongoose。
我有两个模型:users
和recipes
。
User
:
recipes: [{
type: Schema.Types.ObjectId,
ref: 'recipes'
}],
Recipe
:
_creator: {
type: Schema.Types.ObjectId,
ref: 'User',
childPath: "recipes"
},
当我尝试保存食谱并将用户分配到食谱时:
var recipe = new models.Recipe({
title: req.body.title,
slug: req.body.slug,
_creator: user._id
});
recipe.save();
配方保存得很好(即使我无法使用recipe._creator.name从配方中获取用户名)。但是,如果我尝试获取用户详细信息,recipes
数组为空。我希望它充满了新创建的食谱参考。为什么不呢?
答案 0 :(得分:0)
如果我理解正确,一个创作者有很多食谱。对 ? 在这种情况下,你的创作者应该参考的食谱应该引用创作者。
如果您仔细检查食谱,那么您正在对食谱本身进行参考
{ recipes: [{
type: Schema.Types.ObjectId,
ref: 'recipes'
}],
}
而你应该做
{
{ recipes: [{
type: Schema.Types.ObjectId,
ref: 'user'
}],
}
为什么在您的用户模型中您有对用户本身的引用?这似乎不对。
上发布的示例答案 1 :(得分:0)
我遇到了同样的问题,我为解决这个问题所做的是使用相应的参考更新两个文档
var recipe = new models.Recipe({
title: req.body.title,
slug: req.body.slug,
_creator: user._id
});
recipe.save((err) => {
if (err) {
console.log(err);
}
user.recipes.push(recipe);
user.save();
});