gpt4 book ai didi

javascript - 使用 MEAN 堆栈查询关联模型

转载 作者:可可西里 更新时间:2023-11-01 10:43:54 24 4
gpt4 key购买 nike

我正在尝试使用 MEAN 设置模型关联,其中 Epic 有很多任务。我首先创建 Epic,然后在创建任务时关联它。与 Epic 关联的任务数据模型如下所示:

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

在我的公共(public) Epics Controller 中,我试图查询具有当前 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)
}

最佳答案

你也在使用 Mongoose 吗?我会使用“ref”和“populate”。首先,您有一个 TaskSchema。

var TaskSchema = new Schema({  ...  });
mongoose.model('Task', TaskSchema);

添加模型等,然后在其他模式中引用它。我将添加 1 个或多个任务的示例。

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);

关于javascript - 使用 MEAN 堆栈查询关联模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21634548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com