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-感谢您确认此问题。我为您提供了一个解决此问题的答案。如果您能点击勾号,我们将不胜感激。