我正在尝试使用猫鼬和 MongoDB 将任务保存到任务列表中。我想将它冗余地保存在任务集合和相应的列表文档中作为嵌入文档。
它工作正常,但有一件小事:列表的嵌入文档没有它们的 objectId。但我需要它们以便将它们与任务集合中的文档进行逻辑连接。
我的架构:
var TaskSchema = new Schema({
_id: ObjectId,
title: String,
list: ObjectId
});
var Task = mongoose.model('task', TaskSchema);
var ListSchema = new Schema({
_id: ObjectId,
title: String,
tasks: [Task.schema]
});
var List = mongoose.model('list', ListSchema);
我的控制器/路由器:
app.post('/lists/:list_id/tasks', function(req, res) {
var listId = req.params.list_id;
// 1. Save the new task into the tasks-collection.
var newTask = new Task();
newTask.title = req.body.title;
newTask.list = listId;
console.log('TaskId:' + newTask._id); // Returns undefined on the console!!!
newTask.save(); // Works fine!
// 2. Add the new task to the coresponding list.
list.findById(listId, function(err, doc){
doc.tasks.push(newTask);
doc.save(); // Saves the new task in the list but WITHOUT its objectId
});
res.redirect('/lists/' + listId)
});
我可以使用猫鼬不同的方式来实现这一目标吗?还是我必须保存任务然后在将其保存到列表中之前对其进行查询?
谢谢你的建议:-)