2014-07-22 3 views
0

err에 대해 항상 null의 값을 제공하는 간단한 쿼리가 있는데 그 이유를 알 수 없습니다. 여기 내가 가지고있는 코드 :왜 "findOne"은 항상 err = null이라고 말합니까?

async.series([ 
    function(callback){ 
     User.findOne({ email : req.body.email }, function(err, data) { 
      console.log('email address' + req.body.email); // shows '[email protected]' 
      console.log('err = ' + err); // always shows 'null' 
      success = err ? false : true; 
      // do stuff 
     }); 
     callback(); 
    }, 
    function(callback){ 
     var updateData = { 
      reset_key: random 
     }; 
     User.update({ email: req.body.email}, updateData, function(err,data) { 
      callback(); 
     }); 
    } 
], function(err){ 
    if(!err) { 
     res.json({ success: success }); 
    } 
}); 

스키마 : 이미 데이터베이스에 존재하는 이메일 주소를 입력으로 async

var userSchema = mongoose.Schema({ 
    firstname : String, 
    lastname  : String, 
    email  : String, 
    created : { 
     type: Date, 
     default: Date.now 
    }, 
    reset_key : String 
}); 

2 차 함수 호출은 항상만큼 성공적이다. 그러나 async의 첫 번째 함수 호출은 데이터베이스에 존재하는 전자 메일 주소를 입력했는지 여부에 관계없이 항상 errnull이라고 알려줍니다. 왜? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

1

series에서 function의 각이 그들을받을 마지막 function에 대한 어떤 err의 함께 통과해야합니다

function(callback){ 
    User.findOne({ email : req.body.email }, function(err, data) { 
     // ... 

     callback(err); 
    }); 
} 
function(callback){ 
    // ... 
    User.update({ email: req.body.email}, updateData, function(err,data) { 
     callback(err); 
    }); 
} 

callback들에 err의를 제공하지 않고, async.series()err이 발생하고 있음을 인식하지 못합니다.

0

findOne을 사용하여 결과를 찾지 못하는 것은 오류 조건이 아니므로 오류가 설정되지 않습니다. 쿼리에서 결과를 반환했는지 확인하려는 경우 err을 사용할 수 없습니다.

대신 데이터에 데이터가 있는지 확인할 수 있습니다. findOne()이 결과를 반환하지 않으면 데이터가 비어있게됩니다.

관련 문제