2015-11-03 45 views
2

我有一个GroupUser架构,而adding group你映射users它。 A user可以属于多个groups有没有办法,我可以涉及两个对象ID的猫鼬

我有一个以下PartySchema它有usergroups

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中,我将groupsusers分别更新为reference不作为文档。在PartySchema中的

user: [{ type: Schema.ObjectId, ref: 'Person' }], 
    groups: [{ type: Schema.ObjectId, ref: 'Group' }] 

我只获得两个group ID和users ID,这个我不能说为"Group1"巴蒂尔已经选择而不是"Group2",因为从早期的关系“谢恩”属于两个组,但同时添加派对我从Group2中选择“shane”而不是Group1。

在编辑派对页面时,我再次获取所有组和用户,在此我无法说在组2中选择了“Shane”作为“组1”也具有“Shane”和“Group2”已经shane,我们将其保存为参考,而不是作为文档。

-- Group1 
---- Shane [Not selected] 
-- Group1 
---- Shane [selected] 
+0

确定的,而不是用户列表u需要像'USER_GROUP: {user:{type:Schema.ObjectId,ref:'Person'},group:{type:Schema.ObjectId,ref:'Group'}}],''Schema.Types.Mixed' –

+0

just logic not sure if语法虽然是 –

+0

@aishwatsingh:哇...感谢很多老兄,所以我会传递两个与这个数组相关的对象ID吗?如果你知道,你能展示更多细节吗? – Shane

回答

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 
      }) 
    } 
}); 

党的文件中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