我正在尝试使用MEAN建立模型关联,其中Epic有许多任务。我先创建Epic然后在创建任务时将其关联起来。任务数据模型如下所示,Epic关联:
task:
{ name: 'my first task',
epic:
{ name: 'My fist epic',
_id: 52f511c605456ba4c936180d,
__v: 0},
_id: 52f511d605456ba4c936180e,
__v: 0 } }
在我的公共Epics控制器中,我试图用当前Epic的ID查询所有任务,但我运气不好。下面的查询返回所有任务,而不是与我的Epic相关的任务。
Tasks.query({“epic._id": $routeParams.epicId}, function(tasks) {
$scope.tasks = tasks;
});
使用MEAN进行关联和检索是否有更好的方法?我有点像菜鸟。 提前致谢!
修改 我正在玩创建新任务时更新史诗的想法。在app / controllers / tasks.js我有这个代码不起作用。
exports.create = function (req, res) {
var task = new Task(req.body)
Epic.find(req.body.epic.id, function (err, epic) {
if (err) return next(err)
epic.tasks.push(task.id);
epic.save();
})
task.save()
res.jsonp(task)
}
答案 0 :(得分:1)
你还在使用猫鼬吗?我会使用" ref"和#34;填充"。 首先你有一个TaskSchema。
var TaskSchema = new Schema({ ... });
mongoose.model('Task', TaskSchema);
添加模型等,然后您在其他模式中引用它。我将添加一个或多个任务的示例。
var Schema = new Schema({
task: {
type: Schema.ObjectId,
ref: 'Task'
},
tasks: [
{ type: Schema.Types.ObjectId, ref: 'Task'}
]
});
然后用populate调用它。
this.findOne({
_id: id
}).populate('tasks').exec(cb);
答案 1 :(得分:0)
看起来你需要帮助调试xhr。让我们跟踪步骤:
您需要发布更多信息和代码才能知道问题所在。