我有一些使用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)
答案 0 :(得分:2)
确定。结果bindNodeCallback
和bindCallback
不允许传递上下文。所以我们需要这样做:
c.insertMany = c.insertMany.bind(c)
var obs = Rx.Observable.bindNodeCallback(c.insertMany)