Есть ли способ заставить функции mongoose findById вести себя согласованно для удаленных и несуществующих идентификаторов? - PullRequest
0 голосов
/ 30 июня 2019

Mongoose.findByIdfindByIdAndUpdate и т. Д.), Кажется, ведут себя по-разному, когда дано:

  1. Идентификатор, который никогда не существовал : генерирует CastError, потому что в процессе мангуста не может привести строку, присвоенную ObjectId.
  2. Идентификатор, который существовал, но был удален : просто молча возвращает ноль.

Моя структура кода мешает проверять две вещи, хотя, на мой взгляд, они одинаковы.

Пример:

module.exports.findTodo = async (req, res, next) => {
  try {
    res.locals.todo = await Todo.findById(req.params.id);
    // Handle deleted documents. THIS CHECK SHOULDN'T BE NECESSARY
    if (!res.locals.todo) {
      throw new NotFoundError('id');
    }
    next();
  } catch (err) {
    // Handling CastError later here
    next(err);
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...