我有一个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
页面的复选框中一样,并为“Party
”选择群组及其用户
-- Groups
---- Users
您可以在checkbox style[Parent[Group]-Children[User]]
中选择一个论坛及其用户。在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”属于两个团体,但在添加派对时,我只选择Group2中的“shane”,而不是Group1。
在编辑聚会页面时,我再次获得所有组和用户,在此我无法说在组2中选择“Shane”为“Group1”也有“Shane”和“Group2”也有shane,我们将其保存为参考而不是文档。
-- Group1
---- Shane [Not selected]
-- Group1
---- Shane [selected]
答案 0 :(得分:1)
派对架构
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
})
}
});
数据库中的派对文档 (类似这样)
{
"_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 repo获取示例参考https://github.com/AlexZeitler/mongoose-schema-reference-sample