Допустим, у меня есть база данных mongoDB, в которой я создаю документ, принадлежащий пользователю, где и документы, и пользователи хранятся в БД.
Далее скажем, что пользовательский объект содержит ссылку на документ.
Создание нового документа может выглядеть примерно так.
exports.create = function (req, res, next) {
//make a new document
var newDoc = new Document({
title: req.body.title,
content: req.body.content,
});
User.findById(req.user._id, function (err, user) {
if (err)
return res.send(400);
user.documents.push(newDocument._id);
user.save(function(err){
if (err)
return res.json(400, err);
newDoc.save(function(err) {
if (err)
return res.json(400, err); //<--- What if you have an error here??
return res.json(200, {document:'successfully created'});
});
});
});
};
Если у вас есть ошибка в последнем if(err), вы добавите ссылку на новый документ пользователю, но документ не будет создан.
И, конечно, это очень простой случай. Это может стать намного сложнее с многочисленными документами, ссылающимися друг на друга. Каков самый чистый способ справиться с этим в Mongo/Mongoose?