2017-10-02 9 views
3

おはよう、オブザーバブルと約束の続行

SequelizeとRxJSがどのように連携しているかを理解しています。 私が読んだことから、Sequelizeは約束を使用します。ここで、データベースに要素が見つかるたびに、リストをロードしてレンダリングするとどうなりますか?これは、観察に包まれており、使用できるようにする

User.findAll().then() 

しかし、私がしたいことは次のとおりです:

var getAllUsersObservable = Rx.Observable.create(function (obs) { 
    obs.next(user) 
} 

その後、私の観察者がちょうど欲しい、のは言わせ 私はsequelizeからこの構文を使用しています新しいユーザーを印刷します。

var getAllUsersObserver = { 
    next: console.log(user) 
} 

Sequelizeはすべてのユーザーの検索が完了したときにすべてのユーザーのリストを約束するため、これは機能しません。私の質問は、ユーザーを一度に1つずつ印刷させるために、これらの2つをどのように組み合わせて使用​​するのですか?事前

+0

結果のために何らかの種類のカーソルを続けることはできませんか? – Bergi

答えて

0

おかげで、私はまだこれを試していないが、私は同じ質問を持っていますし、後でそれを調査します。しかし、それはあなたが約束からObservableオブジェクトを作成できるように見えます。これを参照してください:https://github.com/Reactive-Extensions/RxJS/blob/master/doc/gettingstarted/promises.md

私はObservablesと約束を一緒にブレンドする最良の方法であると思います。

let observable1 = Rx.Observable.fromPromise(User.findAll()); 
 

 
observable1.subscribe(...);

あなたはなど地図、SwitchMap、などいくつかの他のRX操作を行う必要があるかもしれませんが、これはあなたが後にしているものにあなたが近づく可能性があるように見えます。

希望すると便利です。

+0

アップデート:Sequelizeと似たようなことをやっていて、RxJSにうまくつながっていました。 これは本当に簡単です: Rx.Observable.fromPromise(User.findAll())。subscribe(...); 約束を大いに支持しているので、他のほとんどのRxJSメソッドを使用することができます。 – hartpdx

0

ありがとうございます!私がstackoverflowに慣れてこなかったので、私は自分の問題をどのように解決したか説明するのを忘れてしまった。私はもっ​​とそれをやることを学ぶでしょう。

明らかに、Rx.Observable.fromPromiseがこのトリックを実際に行いました。 はしかし、我々は

Rx.Observable.create(obs => { User.findOrCreate(......).spread((user, 
created) => obs.onNext({whatever}))} 

の使用であり、それは今のところ大きな働いている別の解決策を、選択しました。希望も役立ちます。