Mongoose 모델 집합의 데이터베이스 업데이트 스크립트에 Highland.js을 사용하려고 시도 중이므로 호출에서 Model.find()
에 매우 적합합니다. 몇 가지 동기식 작업 (새로운 스키마, 몇 가지 정리 작업을 수행하기 위해 내 모델을 업데이트하는 작업)이 있으며 마지막에는 save()
문서를 원합니다. 실행해야 할 사전 저장 후크가 있는데 업데이트는 실제로는 곧바로 Model.update()
과 호환되지 않습니다. 이것은 "권리"인 경우 약속을 해결하기 위해Highland.js에서 비동기 변환
var sender_stream = Sender.find({}).stream();
var promise_save = function(document) {
var deferred = Q.defer();
document.save(deferred.makeNodeResolver());
return _(deferred.promise);
}
var sender_deferred = Q.defer();
_(sender_stream).map(function(sender) {
// set some fields on sender...
return sender;
}).map(promise_save).series().on('done', sender_deferred.resolve).resume();
그러나이하지 않는 것 나는 확실하지 않다 : 나는 Q.js와 하이랜드의 조합을 통해 작업 정렬의 그것을 얻을 관리했습니다 길을 잘 유지하고 스트림을 유지하는 방법 ... Q.js와 Highland.js를 너무도 친밀하게 결합하는 것이 이상하게 보입니다. 더 좋은 방법이 있습니까?
업데이트 : 'done'이벤트가 반환되지 않는 데이터보다 호출되지 않는 문제가 점점 더 좋아 보이고 있습니다. 하이랜드가 의도 된 방식인지 확실하지 않습니다. –