RxJS5 Mongo问题

时间:2016-06-19 02:39:15

标签: mongodb rxjs rxjs5

我有一些使用mongo执行查询的RxJS代码。在RxJS v4中运行良好但是当我迁移到v.5时,我遇到了问题。

这里有一些简化的代码:

stick_len

每当我尝试某种查询时,它都会因各种错误而失败。所有错误都与Mongo代码中不存在的// Get a mongo connection getDb() { var connect = Rx.Observable.bindNodeCallback(mongodb.connect) return connect(this.options.connection.uri, this.options.connection.options) } // Query return getDb() .flatMap((db) => { var c = db.collection('foo') var obs = Rx.Observable.bindNodeCallback(c.insertMany, c) return obs(docs) }) .subscribe(...) 对象相关。我认为这可能是一个背景问题,但我不确定。

上面的查询得出(在代码中,undefined是一个mongo集合选项对象)

options

类似的查询产生:

Uncaught TypeError: Cannot read property 'serializeFunctions' of undefined
at BoundNodeCallbackObservable.Collection.insertMany[as callbackFunc](node_modules / mongodb / lib / collection.js: 482: 74)

更新当我手动换行时,工作正常:

TypeError: Cannot read property 'options' of undefined
at BoundNodeCallbackObservable.Collection.remove[as callbackFunc](node_modules / mongodb / lib / collection.js: 1223: 12)

1 个答案:

答案 0 :(得分:2)

确定。结果bindNodeCallbackbindCallback不允许传递上下文。所以我们需要这样做:

c.insertMany = c.insertMany.bind(c)
var obs = Rx.Observable.bindNodeCallback(c.insertMany)