Observables和Sequelize promises

时间:2017-10-02 09:39:42

标签: javascript promise sequelize.js observable

早上好,

我有一个问题,了解Sequelize和RxJS如何协同工作。 从我读到的,Sequelize使用承诺。现在,如果我想加载一个列表并在每次在我的数据库中找到一个元素时渲染会发生什么? 我正在使用sequelize的这个语法:

User.findAll().then()

但我想要的是将它包装在一个可观察的并且能够使用:

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

然后我的观察者只想要打印新用户。

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

对我来说,这是行不通的,因为Sequelize只会在找到所有用户时将所有用户的列表放在承诺中。我的问题是:我如何一起使用这两个来打印我的用户,一次一个?

提前致谢

2 个答案:

答案 0 :(得分:1)

我还没有尝试过,但我确实有同样的问题,稍后会进行调查。但看起来你可以从promise中创建一个Observable对象。请参阅:https://github.com/Reactive-Extensions/RxJS/blob/master/doc/gettingstarted/promises.md

我认为做这样的事情是将Observables和promises融合在一起的最好方法。

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

observable1.subscribe(...);

您可能需要执行其他一些RX操作,例如Map,SwitchMap等,但看起来这可能会让您更接近您所追求的目标。

希望这有帮助!

答案 1 :(得分:0)

非常感谢!由于我是stackoverflow的新手,我忘了回来解释我是如何解决我的问题的。我会学会更多。

事实证明,Rx.Observable.fromPromise确实做到了。 但是,我们选择了另一种解决方案,即使用

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

它现在很好用。希望这也有帮助。