Javascript 使用均值堆栈查询关联模型
我正在尝试使用Epic有许多任务的地方建立一个模型关联。我首先创建Epic,然后在创建任务时将其关联起来。任务数据模型与Epic关联如下:Javascript 使用均值堆栈查询关联模型,javascript,node.js,mongodb,angularjs,express,Javascript,Node.js,Mongodb,Angularjs,Express,我正在尝试使用Epic有许多任务的地方建立一个模型关联。我首先创建Epic,然后在创建任务时将其关联起来。任务数据模型与Epic关联如下: task: { name: 'my first task', epic: { name: 'My fist epic', _id: 52f511c605456ba4c936180d, __v: 0}, _id: 52f511d605456ba4c936180e, __v: 0 }
task:
{ name: 'my first task',
epic:
{ name: 'My fist epic',
_id: 52f511c605456ba4c936180d,
__v: 0},
_id: 52f511d605456ba4c936180e,
__v: 0 } }
在我的公共Epics控制器中,我试图用当前Epic的ID查询所有任务,但我没有太多运气。下面的查询返回所有任务,而不是与my Epic关联的任务
Tasks.query({“epic._id": $routeParams.epicId}, function(tasks) {
$scope.tasks = tasks;
});
有没有更好的方法使用均值进行关联和检索?我有点傻。
提前谢谢
编辑:
我一直在考虑在创建新任务时更新epic的想法。在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)
}
看起来您需要调试xhr的帮助。让我们跟踪以下步骤:
- 您的请求是否发送到服务器李>
- 它到达正确的快车路线了吗李>
- 您的服务器端代码是否对Mongo执行了正确的查找操作李>
- Mongo是否返回了正确的结果李>
- 您是否正确地将Mongo的结果写入响应李>
- 您是否能够通过使用浏览器的开发工具检查网络流量来查看客户端上的响应李>
- 你是否正确处理了成功的承诺
您需要发布更多信息和代码以了解问题所在。您也在使用mongoose吗?我会使用“ref”和“populate”。 首先,您有一个TaskSchema
var TaskSchema = new Schema({ ... });
mongoose.model('Task', TaskSchema);
添加模型等,然后在其他模式中引用它。我将添加一个1个或多个任务的示例
然后用populate来称呼它
this.findOne({
_id: id
}).populate('tasks').exec(cb);
谢谢你的建议,迪伦。我在用猫鼬。根据我的项目,另一个模式将是Epic的父模式,对吗?如果我遵循您的建议,在创建新任务时,我将如何更新epic模型?在您的建议中,您列出了“填充”方法,我假设该方法在任务已与epic关联后用于渲染。我在想,也许我应该尝试从服务器端控制器中的create方法中查找并更新父epic以执行任务。思想?
this.findOne({
_id: id
}).populate('tasks').exec(cb);