2017-10-02 2 views
3

Bonjour,Observables et Sequelize promesses

Je n'arrive pas à comprendre comment Sequelize et RxJS fonctionnent ensemble. D'après ce que j'ai lu, Sequelize utilise des promesses. Maintenant, que se passe-t-il si je veux charger une liste et rendre chaque fois qu'un élément est trouvé dans ma base de données? J'utilise cette syntaxe de sequelize:

User.findAll().then() 

Mais ce que je veux est d'avoir cette enveloppé dans une observable et être en mesure d'utiliser:

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

Alors mon observateur veux juste, disons , pour imprimer le nouvel utilisateur.

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

Pour moi, cela ne fonctionnera pas parce que Sequelize ne mettra la liste de tous mes utilisateurs dans sa promesse quand il est fait de trouver tous les utilisateurs. Ma question est: comment puis-je utiliser ces deux ensemble pour faire imprimer mes utilisateurs, un à la fois?

Merci à l'avance

+0

Ne pas sequelize fournir une sorte de curseur pour les résultats? – Bergi

Répondre

0

Je n'ai pas encore essayé, mais j'ai la même question et enquêteront plus tard. Mais il semble que vous puissiez créer un objet Observable à partir d'une promesse. Voir ceci: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/gettingstarted/promises.md

J'imagine que faire quelque chose comme ceci serait la meilleure façon de mélanger les observables et les promesses ensemble.

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

 
observable1.subscribe(...);

Vous pourriez avoir à faire d'autres opérations de réception, telles que la carte, SwitchMap, etc., mais il semble que cela pourrait vous rapprocher de ce que vous êtes après.

Espérons que cela aide!

+0

Mise à jour: Je faisais quelque chose de similaire avec Sequelize et je l'ai intégré avec succès dans RxJS. C'est vraiment aussi simple que de le faire: Rx.Observable.fromPromise (User.findAll()). Subscribe (...); Vous pouvez utiliser presque toutes les autres méthodes RxJS, car les promesses sont très bien supportées. – hartpdx

0

Merci beaucoup! Comme je suis nouveau à stackoverflow, j'ai oublié de revenir pour expliquer comment j'ai résolu mon problème. Je vais apprendre à faire plus.

En fait, Rx.Observable.fromPromise a vraiment fait l'affaire. Cependant, nous avons choisi une autre solution, qui est l'utilisation de

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

Et il travaille beaucoup pour l'instant. J'espère que cela aide aussi.