Я попытался определить пользовательскую функцию для проверки поля в одной из моих форм. Я заметил, что эта функция работает, только если я выполняю проверку через схему. Разве нет способа также работать в проверке цепочки?
validation.js
export = {
customValidators: {
isUsernameAvailable(username: string) {
return new Promise((resolve, reject) => {
User.findOne({ username: username }, (err, user) => {
if (err) throw err;
if (user == null) {
resolve();
} else {
reject();
}
});
});
}
}
};
app.js
app.use(expressValidator(require("./validation")));
Это не работает:
router.post(
"/",
[
checkBody("username").isUsernameAvailable()
],
(req, res) => {
const err = validationResult(req);
if (err) return res.json(err);
res.json({ success: true });
}
);
Это работает:
router.post("/", async (req, res) => {
req.checkBody({
//username
username: {
notEmpty: true,
isUsernameAvailable: {
errorMessage: "username is already taken"
},
},
//password
password: {
notEmpty: true,
}
});
try {
const result = await req.asyncValidationErrors();
} catch (err) {
res.status(400).json(err);
}
});