Итак, разобрался.
Засада в описании пакета:
"homepage": "http://dandean.github.com/express-form",
Что ведет нас к устаревшей документации. На данный момент проект dandean/express-form закрыт. Однако его форкнули и поддерживают freewil/express-form. Там же и более актуальная документация, в которой есть такой пример:
// Asynchronous custom validator (3 argument function signature)
form.field('username').custom(function(value, source, callback) {
username.check(value, function(err) {
if (err) return callback(new Error('Invalid %s'));
callback(null);
});
});
В моем случае выглядит так:
const programExistsValidator = function (programName, source, callback) {
ImageProgram.findOne({name: programName}, function(err, data){
if(err){
return callback(new Error('Ошибка проверки названия. Ошибка БД.'))
}
if(data !== null){
return callback(new Error('Программа с таким именем уже существует.'));
}
callback(null);
});
};
- programName - это значение поля, которое я проверяю
- source - данные формы (валидация нескольких полей)
Ну, и еще можно отметить, вдруг пригодится кому. `custom` используется как для валидации, так и для фильтрации. Если выкидываем исключение, если возвращаем значение - фильтрация.