Firebase 地图操作员。不同的函数类型和访问器
我最近在Ionic项目中更新了Firebase和AngularFire2 版本:Firebase 地图操作员。不同的函数类型和访问器,firebase,ionic-framework,rxjs,observable,angularfire2,Firebase,Ionic Framework,Rxjs,Observable,Angularfire2,我最近在Ionic项目中更新了Firebase和AngularFire2 版本: 火基:5.0.3 角火2:5.0.0-rc.10 rxjs 6.2.0 现在,我尝试使用迁移指南将项目从常规地图升级到管道: 但如果我对以下代码块使用完全相同的示例: ///my code let dataBaseCollection = this.store.collection('items').snapshotChanges().pipe( map(actions =>
- 火基:5.0.3
- 角火2:5.0.0-rc.10
- rxjs 6.2.0
///my code
let dataBaseCollection = this.store.collection('items').snapshotChanges().pipe(
map(actions =>
actions.map(a => ({ key: a.key, ...a.payload.val() }))
)
).subscribe(items => {
return items.map(item => item.key);
});
///example
afDb.list('items').snapshotChanges().pipe(
map(actions =>
actions.map(a => ({ key: a.key, ...a.payload.val() }))
)
)
我得到以下例外情况:
“OperatorFunction”类型的参数不能分配给“UnaryFunction,Observable>”类型的参数
参数“源”和“源”的类型不兼容
类型“Observable”不可分配给类型“Observable”。存在两种具有此名称的不同类型,但它们不相关
属性“source”在类型“Observable”中受保护,但在类型“Observable”中受公共保护
我已经尝试了rxjs中的两个不同操作符
从“rxjs/operators”导入{map};
从'rxjs/operators/map'导入{map}
非常感谢您的帮助。我不知道这是否是问题所在,但有几点意见:
let dataBaseCollection
正在从接收订阅
。订阅
而不是项目。您不能在订阅
中返回,因此您的代码应如下所示:
let dataBaseCollection = this.store.collection('items').snapshotChanges().pipe(
map(actions => actions.map(a => ({ key: a.key, ...a.payload.val() })))
)
如果只想映射关键点,只需执行以下操作:
let dataBaseCollection = this.store.collection('items').snapshotChanges().pipe(
map(actions => actions.map(a => a.key))
)
我让它运行
我不知道真正的问题是什么。但我完全删除了我的本地存储库,并获得了所有新文件
然后我重新安装了所有的NPM文件。在这个地区的某个地方是我的问题。我猜,我的任何npm包都是问题所在
对不起,我不能再澄清这个问题了。也许其他人将来也会遇到同样的问题,可以在这里添加。您的代码似乎与示例不同。在示例中,
pipe()
后面跟着.subscribe()
返回的位置。很好,您提到了它。我也试过这个只是为了确定。但我还是犯了同样的错误。我将快速编辑我的代码,使之更像示例。嘿,谢谢你的帮助。这是我编辑示例之前的第一种方法,目的是使其与文档中给出的示例更加一致。但这并不能解决map操作符本身的问题。基本上,只要我运行调用,数据库集合中的内容就无关紧要。