Mongooseモデルのセットでデータベース更新スクリプトにHighland.jsを使用しようとしています。同期的に行うべきことがいくつかあり (新しいスキーマに準拠するようにモデルを更新し、いくつかのクリーンアップ操作を行います)、最後にドキュメントを作成します。実行する必要があるいくつかの事前保存フックが構成されていますが、更新はストレート と実際には互換性がありません。Q.jsと Highlandを組み合わせることで、何とか機能させることができました。Model.find()
save()
Model.update()
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();
ただし、これは約束を解決していないようであり、これが物事をうまくストリーム-y に保つための「正しい」方法であるかどうかはわかりません... Q.js と Highland.js を組み合わせるのも奇妙に思えます。親密に。より良い方法はありますか?