Я пытаюсь заставить функцию получить обратный вызов. Сначала ошибка заключалась в том, что параметр обратного вызова не был функцией, а затем я попытался исправить свой синтаксис, сказав, что параметр не определен.
контроллер: (ОШИБКА НА ЛИНИИ 10):
//Tried to declare like "function registraU(nome, ... ())
const registraUsuario = (nome, email, password, (e, usuarioCriado) => {
UsuarioModel.findOne({ email: email }, (e, match) => {
if (e) { return callback(e); }
if (match !== null) {
return callback(null, null);
} else {
var hash = bcrypt.hashSync(password, 10);
password = hash;
novoUsuario = {
nome: nome,
email: email,
password: password
}
var temp = new UsuarioModel(novoUsuario);
temp.save(function(e, usuarioCriado){
if(e){console.log(e)};
return callback(null, usuarioCriado);
});
}
});
});
И вот код, который его вызывает:
passport.use('local-registro', new LocalStrategy({
nomeField: 'nome',
emailField: 'email',
passwordField: 'password',
passReqToCallback : true
},
(req, nome, email, password, done) => {
UsuarioController.registraUsuario(nome, email, password, (e, callback) => {
if(e) {return done(e); }
if(!novoUsuario){
return done(null, false, req.flash({"erroRegistro": "Email já cadastrado"}));
} else {
return done(null, novoUsuario);
}
});
}
));