Пользовательские типы проверки Typescript и Express Validator - PullRequest
1 голос
/ 20 апреля 2019

При использовании пользовательского метода экспресс-валидатора я получаю сообщение об ошибке

Argument of type '(userDoc: User | null) => Promise<never> | undefined' is not assignable to parameter of type '(value: User | null) => PromiseLike<never>'.
  Type 'Promise<never> | undefined' is not assignable to type 'PromiseLike<never>'.
    Type 'undefined' is not assignable to type 'PromiseLike<never>'.

import express from 'express';
import { body } from 'express-validator/check'
import User from '../models/User';

import { login, signUp } from '../controllers/auth';
const router = express.Router();

router.post(
  '/sign-up',
  [
    body('username', 'User Name should be atlest 4 characters long')
      .isLength({ min: 4 })
      .isString()
      .trim()
    .custom((username: string, { req }) => {
      return User.findOne({ username }).then(userDoc => {
        if (userDoc) {
          return Promise.reject('User Name is already taken');
        }
      });
    })
  ],
  signUp,
);

1 Ответ

1 голос
/ 20 апреля 2019

То, как вы реализуете User.findOne, возвращает Обещание.Вот почему вы используете Promise.reject, чтобы выдать ошибку.Таким образом, вы должны вернуть объект Promise, если проверка прошла успешно.

if (userDoc) {
    return Promise.reject('User Name is already taken');
}
return Promise.resolve()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...