У меня есть 2 модели здесь user
и blog
. Поэтому, когда пользователь пишет блог, мой маршрутизатор вызывает их так.Как использовать мангуста для сохранения нескольких документов?
Promise.all([
node.save(),
user.save()
]).then(function (values) {
//do something
}).catch(function (err) {
//print error
})
Как вы можете заметить сразу же, нет никакой гарантии save()
. Любой из них может потерпеть неудачу и откат для остальных. Как я могу убедиться, что оба они сохранены или отменены? Некоторые люди предлагают положить blogs
в коллекцию внутри users
, поэтому все в одном документе, но это сложно сделать в рейтинге блога, не так ли? Я также не уверен, действительно ли это хорошая практика, которая объединяет все вещи в MongoDB. если документы большие, это вызовет проблемы с производительностью (например, запросы/секунды)?
Спасибо.
Вопрос: * «Почему вы используете' .save() '?" *. Это «своего рода» возвращает обещание, но оно действительно срабатывает заранее. Таким образом, выход будет объединен в 'Promise.all()', но фактическая последовательность будет выполняться на '.save()'. Если они являются «новыми», тогда вы можете использовать '.create()' вместо этого, что отлично подходит к обещанию. Если они являются «обновлениями», вы, вероятно, должны использовать '.findOneAndUpdate()' в любом случае. –
Привет, я хочу, чтобы «узел» и «пользователь» были сохранены правильно. Обещание может сказать мне, есть ли какая-либо ошибка, поэтому я могу вернуть соответствующий http-код клиентам. Тогда я нахожу, даже если знаю, что есть ошибка, я не могу откатить эти сохраненные данные. Я новичок в MongoDB и понятия не имею, почему он был спроектирован таким образом: o – zhuchun