Node.js 为什么可以';我是否在passport.js本地策略回调中创建和执行函数?

Node.js 为什么可以';我是否在passport.js本地策略回调中创建和执行函数?,node.js,mongoose,passport.js,Node.js,Mongoose,Passport.js,当我尝试调用saveTheUsr()时,它会导致一个错误,即usr未定义。我就是不明白,为什么它不可访问?我知道我可以简单地排除函数,并在回调中包含函数内容,这样就可以工作了。我只想知道一种声明usr对象并通过回调函数调用它的方法。就像我回电话时试过的那样。可能吗?为什么我的方法不起作用 var LocalStrategy=require('passport-local')。策略; var User=require('../app/models/User'); 函数saveTheUsr(){

当我尝试调用
saveTheUsr()
时,它会导致一个错误,即
usr未定义
。我就是不明白,为什么它不可访问?我知道我可以简单地排除函数,并在回调中包含函数内容,这样就可以工作了。我只想知道一种声明usr对象并通过回调函数调用它的方法。就像我回电话时试过的那样。可能吗?为什么我的方法不起作用

var LocalStrategy=require('passport-local')。策略;
var User=require('../app/models/User');
函数saveTheUsr(){
var usr=新用户();
usr.local.email=电子邮件;
usr.local.password=密码;
usr.save(函数(错误){
如果(错误)
犯错误;
返回完成(空,usr);
});
}
passport.use('local-signup',新的LocalStrategy({
usernameField:'用户名',
passwordField:'密码',
passReqToCallback:true
},
功能(请求、电子邮件、密码、完成){
User.findOne({'local.email':email},函数(err,User){
如果(错误)
返回完成(err);
如果(用户){
返回完成(null,false);
}否则{
saveTheUsr();
}
});

}));如注释中所述。


问题在于
saveTheUsr()
函数中未定义
done
变量。解决方法是让
saveTheUsr
接受一个名为
done
的额外参数,并为调用它的地方传递一个回调函数。

如注释中所述。


问题在于
saveTheUsr()
函数中未定义
done
变量。解决方法是让
saveTheUsr
接受一个名为
done
的额外参数,并为调用它的地方传递一个回调函数。

saveTheUsr()
方法超出您的范围,您需要将
电子邮件和
密码作为参数发送到该方法,如
saveTheUsr(电子邮件、密码)
似乎
done
也可能未定义。是否要使用堆栈跟踪更新您的问题?您需要将
done
传递到
saveTheUsr()
并更新函数,以接受
完成的操作
。请先尝试一下,然后让我们知道它是否对您有效。在添加参数“完成”后,它是否有效!谢谢!EllyBolson-感谢您确认此问题。我为您提供了一个解决此问题的答案。如果您能点击勾号,我们将不胜感激
saveTheUsr()
method超出您的范围,您需要将
email
password
作为参数发送到该方法,如
saveTheUsr(email,password)
似乎
done
也可能未定义。是否用堆栈跟踪更新您的问题?您需要将
done
传递到
saveTheUsr()
并更新函数,以接受
完成的操作
。请先尝试一下,然后让我们知道它是否对您有效。在添加参数“完成”后,它是否有效!谢谢!EllyBolson-感谢您确认此问题。我为您提供了一个解决此问题的答案。如果您能点击勾号,我们将不胜感激。