我遇到了一个大问题,我试图在Mongoose中使用模型关联,因为它会非常有用,但有些东西我不会...
让我们说用户模型的模式如...(等等)
user_geos : [{
type: Mongo.Schema.ObjectId,
ref: 'UserGeo',
}]
还有一个带有此架构的UserGeo模型......(其中包括)
_user: {
type: Mongo.Schema.ObjectId,
ref: 'User'
}
很简单,当我创建一个新的UserGeo时,它会自动将它添加到User中的user_geos数组中,对吗?
user_geo_infos._user = user.id;
db.UserGeo.create(user_geo_infos, function(error, user_geo) {
catches.error(error);
console.log(user_geo);
});
我遇到的一个大问题是,当我创建它时,它会正确地填充" _user"数据库中UserGeo中的字段,但用户模型不会填充自身。数组保持空(" []")。一个细节,但你真正理解的是UserGeo有一个用户和用户有很多UserGeo。
我真的卡住了,我做错了吗?我到处检查过,现在读了10次Mongoose文档......
有什么想法吗?谢谢大家;)
答案 0 :(得分:4)
很简单,当我创建一个新的UserGeo时,它会自动将它添加到User中的user_geos数组中,对吗?
不。这里的魔法/自动化东西比你希望的少得多。 Mongodb以及猫鼬只会一次只对一个系列采取行动。这将在您加载记录并使用mongoose .populate
帮助程序时自动进行查询,但它不能帮助您跨集合进行编写。
答案 1 :(得分:0)
好的,我尝试手动制作,但它很有效,但我很失望......看起来像这样......
db.UserGeo.create(user_geo_infos, function(error, user_geo) {
db.User.findOne(user.id, function(error, user) {
catches.error(error);
user.user_geos.push(user_geo.id);
user.save();
});
catches.error(error);
console.log(user_geo);
});
创建UserGeo后,我获取用户,然后将新数据推送到用户字段...
这是解决方案很重,也许让一些助手会让它更轻..无论如何,谢谢:)