有没有一种方法可以将两个对象ID的mongoose关联起来
我有一个Group
和User
架构,而adding group
映射users
。 user
可以属于多个groups
。
我有一个下面的PartySchema
有user
和groups
。
var Party = new Schema({ name : String, user: [{ type: Schema.ObjectId, ref: 'Person' }], groups: [{ type: Schema.ObjectId, ref: 'Group' }] });
我在一个table structure
中显示了在我的Party
页面的checkbox中的映射,并select了“ Party
”组和其用户,
-- Groups ---- Users
您可以以checkbox style[Parent[Group]-Children[User]]
select一个组及其用户。 在PartySchema
,我将分别更新所选groups
和选定users
作为reference
而不是作为文档。 在PartySchema
。
user: [{ type: Schema.ObjectId, ref: 'Person' }], groups: [{ type: Schema.ObjectId, ref: 'Group' }]
我只是得到两个group
ID和users
ID,与此我不能说为"Group1"
”Shane已被选中,而不是"Group2"
,因为从以前的关系“Shane”属于两个组,但同时添加方I我只从Group2中select“shane”而不是Group1。
在编辑派对页面时,我再次获得所有的组和用户,在这个我不能说在组2中select“Shane”作为“组1”也有“Shane”和“Group2”也有shane和我们将其保存为参考而不是文档。
-- Group1 ---- Shane [Not selected] -- Group1 ---- Shane [selected]
方式
var Party = new Schema({ name : String, user_group: [{user:{ type: Schema.ObjectId, ref: 'Person' },group:{ type: Schema.ObjectId, ref: 'Group' }}] groups: [{ type: Schema.ObjectId, ref: 'Group' }] });
党的对象
var party = new Party({ name: "Haloween Party", user_group: [{ user: shane._id, group: group1._id }, { user: userX._id, group: group1._id }, { user: userY._id, group: group2._id }], groups:[group1._id,group2._id] })
保存缔约方并查询所有现有缔约方
party.save(function(error) { if (!error) { Party.find({}) .populate('user_group.user') .populate('user_group.group') .populate('groups') .exec(function(error, parties) { console.log(JSON.stringify(parties, null, "\t"))//or just parties }) } });
党的文件在DB (这样的事情)
{ "_id" : ObjectId("54cd6669d3e0fb1b302e54e6"), "name" : "Haloween Party", "user_group" : [ { "user" : ObjectId("54cd6669d3e0fb1b302e5411"), "group" : ObjectId("54cd6669d3e0fb1b302e54e5"), "_id" : ObjectId("54cd6669d3e0fb1b302e54e8") }, { "user" :ObjectId("54cd6669d3e0fb1b302e5412"), "group" : ObjectId("54cd6669d3e0fb1b302e54e4"), "_id" : ObjectId("54cd6669d3e0fb1b302e54e7") } ], "groups":[ObjectId("54cd6669d3e0fb1b302e54e5"),ObjectId("54cd6669d3e0fb1b302e54e4")] "__v" : 0 }
Git回购示例参考https://github.com/AlexZeitler/mongoose-schema-reference-sample