我正在尝试使用MEAN堆栈,特别是MEAN.js。
虽然文档中已经很好地解释了所有内容,但是在文档或示例中没有解释将实体(或模型)与另一个实体关联的简单任务。
例如,很容易为Ideas创建一个crud,为Poll创建一个crud。但是,如果我必须链接"民意调查"以一对多的关系来表达"#34;
我假设我会在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;
});
};
但是当角度模型被推送到Express.js后端时,我没有看到关于Idea的请求中的任何痕迹,我唯一得到的是民意调查。
/**
* 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);
}
});
};
这是我的Mongoose模型:
'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);
我确信我做错了什么,但是对于如何执行超出此特定错误或我的设置的任务的任何解释(或链接)将不胜感激。
答案 0 :(得分:0)
我找到的解决方案(我不确定它是正确的解决方案还是解决方法)是使用相应的._id填充轮询的.idea字段:
var poll = new Polls ({
idea: this.idea._id,
vote1: 5,
vote2: 3,
vote3: 3,
vote4: 1,
vote5: 2
});
此时,当我表达时,poll.idea有正确的关联。