使用MEAN堆栈查询相关模型

我试图build立一个使用MEAN模型关联,其中一个史诗有很多任务。 我正在创buildEpic,然后在创build任务时将其关联。 任务数据模型与Epic相关:

task: { name: 'my first task', epic: { name: 'My fist epic', _id: 52f511c605456ba4c936180d, __v: 0}, _id: 52f511d605456ba4c936180e, __v: 0 } } 

在我的公共Epics控制器中,我试图用当前Epic的ID来查询所有的任务,但是我没有太多的运气。 下面的查询返回所有任务,而不是与我的史诗关联的任务。

 Tasks.query({“epic._id": $routeParams.epicId}, function(tasks) { $scope.tasks = tasks; }); 

是否有更好的方法来使用MEAN进行关联和检索? 我有点小菜。 提前致谢!

编辑:我玩了一个新的任务创build更新史诗的想法。 在应用程序/控制器/ 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) } 

       

网上收集的解决方案 "使用MEAN堆栈查询相关模型"

你也使用mongoose? 我会用“ref”和“populate”。 首先你有一个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'} ] }); 

然后用填充来调用它。

 this.findOne({ _id: id }).populate('tasks').exec(cb); 

看起来你需要帮助debuggingxhr。 我们来追溯一下步骤:

  • 您的请求是否将其发送到服务器?
  • 它是否到达正确的快速路线?
  • 您的服务器端代码是否对Mongo执行正确的查找操作?
  • Mongo返回正确的结果吗?
  • 你是否正确地将Mongo的结果写入响应中?
  • 您是否能够通过使用浏览器的开发工具检查networkingstream量来查看客户端的响应?
  • 你是否正确处理了承诺的成功?

你需要发布更多的信息和代码来了解问题所在。