저는 약속의 세계에 익숙하지 않아 어떤 경우에 사용법을 완전히 이해하고 있는지 확신 할 수 없습니다.Express.js에서 Sequelize 약속 실행 중지
내 코드를보다 쉽게 읽을 수 있도록 최근에 추가 된 지원 약속을 따르십시오. 일반적인 시나리오는 무한 콜백에서 오류를 여러 번 처리하지 않는 것입니다. 아래 코드는 항상 204
을 반환하지만 사진을 찾을 수없는 경우 404
을 반환하고 싶습니다.
404를 보낸 후 Promise 체인의 실행을 "중지"하도록 Sequelize에 지시하는 방법이 있습니까? res.send
은 비동기 적이므로 실행이 중지되지 않습니다.
// Find the original photo
Photo.find(req.params.id).then(function (photo) {
if (photo) {
// Delete the photo in the db
return photo.destroy();
} else {
res.send(404);
// HOW TO STOP PROMISE CHAIN HERE?
}
}).then(function() {
res.send(204);
}).catch(function (error) {
res.send(500, error);
});
물론이 예제는 간단하며 콜백으로 쉽게 작성할 수 있습니다. 그러나 대부분의 경우 코드가 길어질 수 있습니다.
는 당신이 필요로하는 약속을 표시하는 방법입니다 . 나는 후유증에 익숙하지 않다.하지만 나는 그럴 수있는 방법이 있어야한다고 생각한다. –
감사합니다. 내가 아는 유일한 것은 Sequelize가 Bluebird를 사용한다는 것입니다. 그러나 API에서 약속 체인을 막을 수있는 어떤 것도 표시되지 않습니다. – Pedro
'then' 핸들러 안에'throw '하면 체인을 거부합니다. 또한 결과가 발견되지 않으면 찾기 호출을 자동으로 거부하는 [공개 문제] [https://github.com/sequelize/sequelize/issues/272]가 있습니다. 기능이 필요한 경우 지원을 음성으로들을 수 있습니다. –