2015-08-22 31 views
1

我創建一個web應用程序,包括團隊和用戶。用戶可以屬於多個團隊,團隊由許多用戶組成。爲了實現這一點在後臺,我跟着導遊水線像this one創建關聯表,並創造了水線模型爲用戶和組。做完這些之後,我仍然不確定我的API可能會如何返回,例如屬於某個團隊的用戶列表。 我不確定這裏的最佳做法是什麼。我應該在團隊模型中創建一個只存儲團隊用戶名稱的數組,並在需要時返回該數組?或者有沒有一種有效的方式來查詢關聯表以獲得特定團隊的用戶列表? 任何幫助將不勝感激!如何構建數據庫模型在帆的許多一對多關聯

+0

你鏈接到的水線指南有所有的答案 - 只需用「寵物」替換「團隊」,它就是爲你準確建模的。您可以使用「填充」來獲取與用戶關聯的所有團隊,或與團隊關聯的所有用戶。 – sgress454

回答

2

使用blueprints你的API,你將自動檢索球隊的用戶。

如果你想使用自定義控制器,可以使用獲得的populate()相同的結果。

Team.findOne({id:id}).populate('users').exec(function(err, team){ 
    console.log(team.toJSON()) 
}); 
1

我的建議是,重新審視自己的業務邏輯,如果你正在使用的數據庫就像蒙戈規劃模型狀物體,Y想有用戶喜歡你的主要項目:

var UserModel = { 
 
    name: String, 
 
    age: Number, 
 
    teams:[ 
 
    { 
 
     name: String, 
 
     memberSince: Date 
 
    }, 
 
    { 
 
     name: String, 
 
     memberSince: Date 
 
    } 
 
    ] 
 
};

然後取回一些球隊的查詢看起來像

var memberList = UserModel.find({teams.name:<your team>}); 

不要的用戶列表中使用任何IDS綁定collecti ons只是使用數組在您的用戶集合中使用它們。

+0

不幸的是我需要的團隊模式來存儲個人信息的球隊,所以我不知道你的建議是可行的。 – pdorns

相關問題