gpt4 book ai didi

javascript - 从 node.js 和 Mongoose 中的回调返回值

转载 作者:行者123 更新时间:2023-11-30 07:04:50 24 4
gpt4 key购买 nike

我尝试了以下代码。

function authenticate( accesskey )  {
var res = someModel.findOne( {'uid': accesskey}, function ( err , user) {
if(err){
console.error("Can't Find.!! Error");
}
if(user===null){
return false;
}
else{
console.log(user);
return true;
}
});
console.log(res);
return res;
}

但是 res 返回的是 mongoose 数据类型。

我希望像这样调用身份验证函数 -

if(authenticate(req.params.accesskey)){
//do something
}
else{
//do something else
}

实现 Mustafa Genç 的解决方案后更新

在熟悉了回调之后,我得到了以下代码。

function authenticate( req, result, accesskey, callback )  {
var auth = null;

someModel.findOne( {'uid': accesskey}, function ( err , user) {
console.log("try authenticate");
if(err){
console.error(err);
}
if(user===null)
auth = false;
else
auth = true;
callback(auth);
});
}

我是这样用的-

routeHandler( req, reply ) {
authenticate( req, reply, req.params.accesskey , function (auth) {
if(auth) {

//"primary code"

}
else {
//fallback
}
});
}

最佳答案

你需要一个回调函数,因为这是一个异步请求:

function authenticate(accesskey, callback)  {
var auth = null;

userModel.findOne({'uid': accesskey}, function(err, user) {
console.log("TRY AUTHENTICATE");

if (err) {
console.error("Can't Find.!! Error");
}

//None Found
if (user === null) {
console.error("ACCESS ERROR : %s Doesn't Exist", accesskey);
auth = false;
} else {
console.log(user);
auth = true;
}

callback(auth);
});
}

然后像这样调用这个函数:

authenticate("key", function (authResult) {
//do whatever
});

关于javascript - 从 node.js 和 Mongoose 中的回调返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21570985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com