Я пытаюсь сохранить задачу в списке задач с помощью мангуста и MongoDB. Я хочу сохранить его избыточно в коллекции задач и в соответствующем документе списка в виде встроенного документа.mongoose.js: _id встроенного документа
Это прекрасно работает, но одна мелочь: Вложенные документы списка не имеют своих объектов. Но я нуждаюсь в них, чтобы логически связать их с документами в коллекции задач.
Мои Schemas:
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)
});
Могу ли я использовать мангуст другой способ достичь этого? Или мне нужно сохранить задачу, а затем запросить ее, прежде чем сохранять ее в списке?
Спасибо за совет :-)
Я не понимаю, что вы хотите сделать с этим :-(Но он также не работает: по-прежнему нет ObjectId для вложенных документов ... – Sven
Кроме того, я не уверен, вам нужно определить _id на схеме, если вы хотите сгенерировать. Проверьте это: http://stackoverflow.com/questions/6854431/how-do-get-the-objectid-after-i-save-an -объект-в-мангусты –