2017-03-01 2 views
0

휴대 기기 사용자의 이미지와 일부 데이터가있는 시나리오가 있습니다. 저는 Amazon Web Services를 사용하고 있습니다. 아이디어는 이미지를 S3에 저장하고 데이터를 데이터베이스 테이블에 저장하는 것입니다.모범 사례 - 노드 JS 오류 처리 + 폴백

노드 JS를 사용하여이 데이터를 처리하고 있습니다.

S3에 이미지를 저장하려면 AWS SDK를 사용하고 있습니다. 레코드를 MySQL에 저장하려면 'mysql'NPM 패키지를 사용하고 있습니다.

문제점 두 이벤트 모두 원활하게 실행할 수 있도록하는 가장 좋은 연습 방법이다, 그렇지 않은 경우, 반드시 어느 것도 이루어지지 할 어떤

. S3 putObject가 끝났으며 오류가 없다고 상상해 봅시다.하지만 MySQL 삽입 시간이 초과되었습니다.

솔루션

내가 많은 가지고 올 수 - 그리고 과거에있다. 여기에 진짜 문제는 내가 베스트 프랙티스로 생각할 것이고 스택 오버 플로우를 연구 한 후에 좋은 시나리오 나 질문에 대한 모범 사례를 찾을 수없는 것 같습니다.

"가장 좋은 방법은 무엇입니까? 단일 함수가 두 개 이상의 (잠재적으로 오류가 발생하기 쉬운) 원격 종속성을 포함 할 때 오류를 처리합니까? "

아무에게도 답변이 없습니까?

모두 감사합니다.

+0

"최상의 방법"은 스택 오버플로에 문제가있는 문구입니다. 귀하의 질문과 같이 무제한 적으로 의견을 수렴합니다. 또한 과거에 한 일을 보여주지 않았기 때문에 이미 알고있는 답을 우리에게 알려주지 못했습니다. http://stackoverflow.com/q/7310521/215552도 참조하십시오. –

답변

0

좋은 질문이지만 비동기 트리거링을 사용하는 것이 좋습니다. 이것은 간단히 말해서,이 작업을 수행하지 않거나 이벤트가 트리거 될 때까지 그러한 조치를 부여하는 것을 의미합니다. 이벤트 패키지를 사용하는 노드 사용자 정의 이벤트 스트림의 영역에는 이동하는 한 가지 방법이 있습니다. 수동으로 이벤트를 생성 한 다음 특정 응답을 수신 한 다음 적절하게 실행하면 원하는 결과 만 실행됩니다. 갈 가장 좋은 방법은 약속의 개념을 사용하는 것입니다. 약속은 실행, 작성, 기존의 콜백 기반 접근 방식과 비교할 때 비동기 작업을 관리 할 수 ​​있습니다. 또한 동기식 try/catch와 유사한 접근 방식을 사용하여 비동기 오류를 처리 할 수 ​​있습니다. 노드에 블루 버드를 사용해보세요. https://alexperry.io/node/2015/03/25/promises-in-node.html