平均实体协会

MEAN entities association

我正在试验 MEAN 堆栈,特别是 MEAN.js。

虽然文档中对所有内容都进行了很好的解释,但文档或示例中似乎并未解释将一个实体(或模型)与另一个实体(或模型)相关联的简单任务。

例如,很容易为想法生成一个 crud,为投票生成一个 crud。但是,如果在一对多关系中我必须 link "polls" 到 "idea" 怎么办?

我假设我会在 polls.client.controller.js:

中做类似的事情
// Create new Poll
    $scope.create = function() {
        // Create new Poll object

        var poll = new Polls ({
            ideaId: this.idea.ideaId,//here I associate a poll with an Idea
            vote1: this.vote1,
            vote2: this.vote2,
            vote3: this.vote3,
            vote4: this.vote4,
            vote5: this.vote5

        });

        // Redirect after save
        poll.$save(function(response) {
            $location.path('polls/' + response._id);

            // Clear form fields
            $scope.name = '';
        }, function(errorResponse) {
            $scope.error = errorResponse.data.message;
        });
    };

但是当 angular 模型被​​推送到 Express.js 后端时,我在请求中没有看到任何关于想法的痕迹,我唯一得到的是投票。

/**
 * Create a Poll
 */
exports.create = function(req, res) {
var poll = new Poll(req.body);
poll.user = req.user;
//poll.ideaId = req.ideaId;//undefined
poll.save(function(err) {
    if (err) {
        return res.status(400).send({
            message: errorHandler.getErrorMessage(err)
        });
    } else {
        res.jsonp(poll);
    }
});
};

这是我的猫鼬模型:

'use strict';

/**
 * Module dependencies.
 */
 var mongoose = require('mongoose'),
Schema = mongoose.Schema;

/**
 * Poll Schema
 */
var PollSchema = new Schema({

vote1: {
    type: Number
},
vote2: {
    type: Number
},
vote3: {
    type: Number
},
vote4: {
    type: Number
},
vote5: {
    type: Number
},
created: {
    type: Date,
    default: Date.now
},
user: {
    type: Schema.ObjectId,
    ref: 'User'
},
idea: {
    type: Schema.ObjectId,
    ref: 'Idea'
}
});

mongoose.model('Poll', PollSchema);

我确信我做错了什么,但是任何关于如何执行此任务的解释(或 link)超出我的特定错误或设置的任何解释都将不胜感激。

我找到的解决方案(我不确定它是正确的解决方案还是解决方法)是用其对应的 ._id 填充投票的 .idea 字段:

var poll = new Polls ({
            idea: this.idea._id,
            vote1: 5,
            vote2: 3,
            vote3: 3,
            vote4: 1,
            vote5: 2

        });

此时,当我开始表达时,poll.idea 具有正确的关联。