gpt4 book ai didi

javascript - 返回 false 是否可以通过异步函数传递 ESLint 一致返回错误?

转载 作者:行者123 更新时间:2023-11-30 07:33:43 27 4
gpt4 key购买 nike

我正在使用 ExpressJS,需要在我的代码上运行和传递 ESLint 规则。有一个规则“consistent-return”,对于这样的代码抛出:

function getUsers( req, res, next ){
if( req.userIds.length === 0 ){
return next();
}

collection.find({"_id": {$in: req.userIds}}, function( err, doc ){
if( err ){
return next();
}

req.users = doc;
return next();
});//find()
}//getUsers()

现在,这段代码给出了“consistent-return”错误。似乎有 2 个可能的更改可以消除此错误,我不确定其中哪个是正确的。

function getUsers( req, res, next ){
if( req.userIds.length === 0 ){
return next();
}

collection.find({"_id": {$in: req.userIds}}, function( err, doc ){
if( err ){
return next();
}

req.users = doc;
return next();
});//find()

return false; // adding return false passes the ESLint error
}//getUsers()

 function getUsers( req, res, next ){
if( req.userIds.length === 0 ){
return next();
}

// adding return in below line passes the ESLint error.
return collection.find({"_id": {$in: req.userIds}}, function( err, doc ){
if( err ){
return next();
}

req.users = doc;
return next();
});//find()
}//getUsers()

请告知哪种方法是正确的。谢谢。

最佳答案

这里的规则指向了一个真正的一致性问题:有时你似乎返回了一个值,有时却没有。它之所以有效,是因为返回值被忽略了。 return 语句的唯一要点是从执行函数的其余部分中跳出。

此处的代码具有误导性,影响了可读性。

替换

if( err ){
return next();
}

if( err ){
next();
return;
}

整个不混淆的代码:

function getUsers( req, res, next ){
if( req.userIds.length === 0 ){
next();
return
}
collection.find({"_id": {$in: req.userIds}}, function( err, doc ){
if( !err ){
req.users = doc;
}
next();
});//find()
}//getUsers()

关于javascript - 返回 false 是否可以通过异步函数传递 ESLint 一致返回错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41484995/

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