从javascript中回调数据?
问题描述:
我想知道关于最好的方式来获得令牌变量回到高阶函数范围>>这样我就可以从高阶函数从javascript中回调数据?
signinUser: async (_, data) => {
const user = await User.findOne({'email': data.email.email}).exec();
console.log(bcrypt.compare(data.email.password,user.password, (err,result)=>{
if(err){return("sorry error")}
if(result) {
var token = jwt.sign({_id: user._id},
config.secret, {expiresIn: 60 * 60 * 24 * 7});
}
}))
return {user: {id: user._id, name: user.name, email: user.email}, token: "this is a token"}
}
答
如果你想留在异步的await语法返回它,您需要将bcrypt.compare调用传递给Q或BlueBird库的承诺并编写如下代码:
let result = await Q.nfcall(bcrypt.compare, data.email.password,user.password)
if(result) {
var token = jwt.sign({_id: user._id},
config.secret, {expiresIn: 60 * 60 * 24 * 7});
}
return {id: user._id, name: user.name, email: user.email}, token: token}