【发布时间】:2019-04-20 11:27:55
【问题描述】:
使用 express 验证器的自定义方法时出现错误
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,
);
【问题讨论】:
-
这段代码没有任何问题。请发布有关您致电
body()的上下文的更多详细信息。 -
有条件的在
if之后尝试return Promise.resolve(),如果没有找到用户,你应该返回一个Promise对象。 -
它起作用了,但你能解释一下为什么吗?
标签: typescript express express-validator