Дублирующая запись в журнале Mongoose при использовании обещаний - PullRequest
1 голос
/ 28 сентября 2019

Я реализовал обещания в mongoose, но я получаю повторяющиеся записи в журнале, и я не уверен, что это ожидаемый результат, и если да, то почему?

Я запускаю функцию ниже, только один раз во времяоператор if.

const isUsernameTaken = (username) => {
  let isTaken;
  const promise = User.find({username: username}, (err, doc) => {
    if(doc.length) {
      isTaken = true;
    } else {
      isTaken = false;
    }
  }).exec();
  promise.then(() => {
    return isTaken;
  });
}

выходные данные отладки mongoose

Mongoose: users.find({username: 'test'}, {projection: {}})
Mongoose: users.find({username: 'test'}, {projection: {}})
true

против того, что я ожидал

Mongoose: users.find({username: 'test'}, {projection: {}})
true

1 Ответ

0 голосов
/ 28 сентября 2019

Похоже, использование обратного вызова для find, так как вызов exec() отправляет запрос дважды ... Помещение обратного вызова внутри promise.then(...) должно исправить это:

const isUsernameTaken = (username) => {
  User.find({username: username})
    .exec()
    .then(doc => doc ? true : false)
    .catch(err => console.log(err));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...