当我尝试拨打saveTheUsr()
时,会导致错误usr is not defined
。我只是没有得到它以及为什么它无法访问?我知道我可以简单地排除函数并在回调中使用函数内容,它会起作用。我只是想知道一种方法,我可以声明usr对象并通过回调中的函数调用它。正是我在回调中尝试的方式。那可能吗?为什么我的方法不起作用?
var LocalStrategy = require('passport-local').Strategy;
var User = require('../app/models/user');
function saveTheUsr(){
var usr = new User();
usr.local.email = email;
usr.local.password = password;
usr.save(function(err) {
if (err)
throw err;
return done(null, usr);
});
}
passport.use('local-signup', new LocalStrategy({
usernameField : 'username',
passwordField : 'password',
passReqToCallback : true
},
function(req, email, password, done) {
User.findOne({ 'local.email' : email }, function(err, user) {
if (err)
return done(err);
if (user) {
return done(null, false);
} else {
saveTheUsr();
}
});
}));

答案 0 :(得分:2)
正如评论所指出的那样。
问题在于done
函数中没有定义saveTheUsr()
变量。它的修复方法是让saveTheUsr
接受一个名为done
的额外参数,并为调用它的地方传递一个回调函数。