내 약속에 문제가 있음, 삭제 된 상태를 확인하겠다고 약속 했으므로 상태가 삭제되면 약속이 거부되고 다른 경우는 해결되지만 q 응답을 거부 잡을 약속 내가 뭐가 잘못 아무 생각이 없다, 이것은 .findById
콜백이 완료되면 모든 기능은 즉시 실행, 내 코드는 코드를 작성했습니다 방식으로q.promise가 노드 js에서 거부 응답을 포착 할 수 없음
//Promises
function checkDeleted(status){
// 'status' return 0 or 1
var deleted = 1
var notDeleted = 0
return Q.promise(function (resolve, reject){
console.log("check deleted executed")
if (status == notDeleted){
console.log('Deleted Status: ' + status)
resolve(status)
} else {
console.log("Else executed") // if i try to update data that has been deleted, it will be executed, actually this already executed after i am try to update data
reject(new Error("Data has been deleted"))
}
})
}
//Handler
function updateTodo(req, res){
Todo.findById(req.params.id, function (err, response){
if (!err){
checkDataValidated(response)
.then(checkDeleted(response.deleted)) //this should be return reject response
.then(dataUpdate(response, req))
.then(saveDataUpdated(response))
.then(function (data){
res.json({"data":"all data already updated"})
})
.catch(function (error){
res.send(error)// But reject response not catch here
})
.done()
}
})
}
을 당신은'이를 다시 작성해야 그 때는 (() => checkDeleted (response.deleted)) 예를 들어. 그렇지 않으면'findById'에 대한 콜백이 실행되는 즉시 모든 함수를 호출하는 것입니다. –