Я создаю приложение node.js, используя mongoDB.
Мне нужно создать объект книги, сохранить его, а также добавить его в список книг пользователя.
Затем мне нужно иметь одно «сохранение» для книги, а затем второе для пользователя (для которого был обновлен список книг).
Я делаю что-то вроде:
book = new Book(); // I'm using moogoose
book.title = req.params.title
book.save(function(err){
if(!err){
jsonObj = {"title":book.title};
res.writeHead(200, {'content-type': 'application/json'});
res.write(JSON.stringify(jsonObj));
res.end();
// Add book in user things list
user.books.push(book);
user.save(function(error){
if(error) {
console.log(JSON.stringify({ "error" : "internal error" }));
}
});
} else {
jsonObj = { "error" : "internal error while saving book" };
res.writeHead(200, {'content-type': 'application/json'});
res.write(JSON.stringify(jsonObj));
res.end();
}
console.log(JSON.stringify(jsonObj));
});
Кажется, что иногда книга сохраняется в БД, а не сохраняется в списке книг пользователя, а иногда наоборот. Я не очень хорошо знаком с методом асинхронного обратного вызова (вложенный поверх этого ...).
Я, конечно, что-то не так делаю ... Какой лучший способ сделать это?