【问题标题】:How should I approach my back end design using the MEAN stack?我应该如何使用 MEAN 堆栈来处理我的后端设计?
【发布时间】:2016-10-16 04:25:51
【问题描述】:

这可能更像是一个寻求建议的案例。但是,我将提供示例代码作为我想要实现的示例。我正在尝试构建我的第一个后端系统,但我一直遇到设计问题。

我的 MongoDB 数据库由 4 个主要部分组成 - 配置文件、团队、草稿和用户。配置文件(作为使用 ID 获取所有内容的主要数据)模式具有保存具有团队和草稿 ID 的数组的属性。这个想法是,当提供配置文件时,它将使用 ID 用相关数据填充所有这些属性。

使用 Mongoose 的配置文件架构示例:

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

我知道这条路线行不通,但我该如何解决呢?我使用更普通的方法只是为了解释我想要实现的目标。任何帮助将不胜感激。

【问题讨论】:

    标签: node.js mongodb express mongoose mean-stack


    【解决方案1】:

    我建议您结合使用反规范化规范化

    因为 MongoDB 不是关系型数据库

    反规范化规范化快得多。您不再需要使用关系。

    您可以阅读此article希望对您有所帮助。

    干杯

    【讨论】:

    • 这很有帮助,谢谢。我将尝试按照您和文章的建议实施组合。
    猜你喜欢
    • 2012-07-08
    • 1970-01-01
    • 2013-09-27
    • 2017-01-04
    • 2014-02-06
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多