这可能更多是寻求建议的情况。但是,我将提供示例代码作为我想要实现的示例。我正在尝试构建我的第一个后端系统,并且我一直遇到设计问题。
我的MongoDB数据库由4个主要部分组成 - 个人资料,团队,草稿和用户。配置文件(作为使用ID获取所有内容的主要数据)模式具有用于保存具有团队和草稿ID的数组的属性。我们的想法是,当提供配置文件时,它将使用ID在相关数据中填充所有这些属性。
使用Mongoose的Profile模式示例:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserProfileSchema = new Schema({
Name : String,
Email : String,
Admin : Boolean,
Status : Number,
UserID : String,
PrivateProfile: Boolean,
Drafts: [String], //This array holds the draft IDs
Teams:[String] //Holds the team profiles IDs
});
module.exports = mongoose.model('UserProfile', UserProfileSchema);
使用Mongoose的团队配置文件架构示例:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var TeamProfileSchema = new Schema({
Name : String,
CaptainID : String,
CaptainName : String,
Members : [String], //Array of user IDs
DateCreated : Boolean,
Reputation : Number
});
module.exports = mongoose.model('TeamProfile', TeamProfileSchema);
查找用户所有团队资料的路线示例,并获取与该团队相关联的所有成员:
router.route('/teams/captain/:user_id')
.get(function (req, res) {
TeamProfile.find({
CaptainID : req.params.user_id
}, function (err, teams) {
if (err)
res.send(err);
for (var x in teams) {
var membersArray = [];
for (var i in teams[x].Members) {
var ID = teams[x].Members[i];
UserProfile.find({
UserID : ID
}, function (err, profile) {
if (err)
res.send(err);
membersArray.push(profile);
});
}
teams[x].Members = membersArray;
console.log(teams[x].Members);
}
res.json(teams);
});
})
我知道这条路线不起作用,但我该如何解决呢?我使用更多的香草方法只是为了解释我想要实现的目标。任何帮助都将受到高度赞赏。
答案 0 :(得分:1)