저는 ExpressJS를 사용하고 있으며 코드를 실행하고 ESLint 규칙을 전달해야했습니다. 다음과 같은 코드에 대해 throw되는 "consistent-return"규칙이 있습니다.비동기 함수의 ESLint 일관 반환 오류를 전달하려면 false를 반환해도 괜찮습니까?
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 next()'는 이미 모든 코드에서 사용했습니다. 읽기 쉽지 않거나 다른 심각한 단점이 있습니까? –
지금 당장 나는 독자가 반환 된 값이 무엇이 일어 났는지 이해하기 위해 무시된다는 것을 알게하는 것보다 다른 단점이있을 수 있다고 생각하지 않는다. 하지만 비동기 성이 점점 더 많은 약속 (반환)으로 처리되면서 점점 더 혼란 스러울 수 있습니다. –
확인. 코드가 ESLint 테스트를 통과했습니다. 하지만 여전히 나 혼란 스럽다.나에게 그것은 오류를 반환해야한다. 왜냐하면 우리는 find() 함수 이후가 아니라 if 블록에'return' 문을 가지고 있기 때문에 일관된 반환 오류를 반환 할 것이라고 기대했을 것이다. –