2015-11-03 27 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

相關問題