Я работаю с nodejs/express/mongoose/angularjs. Я хотел бы обновить коллекцию с именем "Списки", которая имеет несколько свойств, один из которых представляет собой массив элементов. В следующем коде я нажимаю новые элементы задачи в массиве items. Все работает нормально, однако функция обновления не отправляет обновленную коллекцию, тогда я должен выполнить другой запрос в базе данных. Есть ли более эффективный способ сделать это?
Код nodejs/express:
exports.addTaskToList = function(req, res) {
var listId = req.params.Id;
var taskId = req.params.TaskId;
Lists.update({_id: listId}, {$push: {items: taskId}}, {safe:true, upsert: true}, function(err, result){
if(err) {
console.log('Error updating todo list. ' + err);
}
else{
console.log(result + ' todo list entry updated - New task added');
Lists.findById(listId).populate('items').exec(function (err, updatedEntry) {
if (err) {
console.log('Unable to retrieve todo list entry.');
}
res.send(JSON.stringify(updatedEntry));
});
}
});
};
Кроме того, элементы массива представляют собой массив ObjectIds. Эти элементы находятся в отдельной схеме, поэтому в отдельной коллекции. Можно ли выталкивать весь объект, а не только его _id, чтобы не создавалась другая коллекция?