Mongoose - проверяет, сделал ли upsert новый документ или нет - PullRequest
0 голосов
/ 08 февраля 2019

Есть ли способ узнать, создал ли Mongoose upsert новый документ или нет через await ?По сути, я хочу сделать это , кроме как без обратного вызова.

Примечание: я использую findByIdAndUpdate

1 Ответ

0 голосов
/ 08 февраля 2019

Нет никакой разницы в callback, async await или даже в .then функций мангуста

Обратный вызов

User.update({ _id: usr._id }, upsertData, { upsert: true }, function(err, num) {
  console.log(err)
  console.log(num)
}

Async Await

try {
  const num = await User.update({ _id: usr._id }, upsertData, { upsert: true })
  console.log(num)  
} catch (err) {
  console.log(err)
}

Таким образом, в основном обе вышеуказанные функции будут регистрировать одно и то же

Теперь вам нужно проверить, обновлен ли возвращенный документ или добавлен с помощью findOneAndUpdate (findByIdAndUpdate)

const num = await User.findOneAndUpdate({ _id: id }, upsertData, { upsert: true })
console.log(num) 

Таким образом, здесь num напечатает документ, если он уже существует , или null , если он был вставлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...