2014-12-12 3 views
1

나는 이것이 간단하다고 생각하지만 작동시키지 못합니다. 두 가지 프로세스가 있습니다. 하나는 데이터를 소비하고 다른 하나는 데이터를 장식합니다. 큐 서비스로 연결됩니다. 첫 번째는 문서를 '저장'다음 두 번째 큐 :쓰기가 완료 될 때까지 기다리도록 mongoose.save 콜백을 강제 실행하십시오.

// 'post' is a mongoose object 

post.save(function (err) { 
    if (!err) { 
     self.decorate('post', post.service, post.id); 
    } 
}); 

서비스 두 큐 메시지를 수신 한 다음 큐를 조회하려고합니다. 그러나 항목을 찾지 못했습니다. 항목에 쓰여지고 몇 초 후에 대기중인 메시지를 다시 실행하면 올바르게 찾습니다.

쓰기가 완료되기 전에 두 번째 서비스가 실행되고있는 것처럼 보입니다.

Mongoose 콜백이 동 기적으로 대기/작동하도록하려면 어떻게해야합니까? 연결 옵션에 '안전 : 참'을 추가하려고했습니다.

답변

1

save() 메소드에서 promise를 사용해보십시오.

post.save().then(function (savedPost) { 
    self.decorate('post', savedPost.service, savedPost.id); 
}); 
+0

비동기 지옥에서 나를 구해 줬습니다. 고맙습니다. – Sterex

+0

비동기 함수가 반환 될 때까지 기다리기 위해 비어있는'.then()'을 할 수 있습니까? – Gobliins

+0

@ 고블린 나는이 상황에서 도움이되지 않을 것이라고 생각합니다 어떤 코드를 실행해야 콜백 함수 안에 있어야합니다. –