我最近在我的Ionic项目中更新了Firebase和AngularFire2
版本:
- 火力基础:5.0.3
- 角度火力2: 5.0.0-rc.10
- RXJS 6.2.0
现在我尝试使用迁移指南将项目从常规地图升级到管道: 迁移指南 角度火力2 版本5
但是,如果我对以下代码块使用完全相同的示例:
///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<{ const: string; return: any; }[]>>'.
参数类型"源">和"源"不兼容。
类型"可观察"不可分配给类型"可观察"。存在两种具有此名称的不同类型,但它们不相关。
属性"源"在类型"可观察"中受保护,但在"可观察"类型中受公共保护。
我已经尝试了来自rxjs的两个不同的运算符
从 'rxjs/operators ' 导入 { map }; 从 'rxjs/operator/map' 导入 { map };
我感谢任何帮助。
好吧,我不知道这是否是问题所在,但有一些观察:
let dataBaseCollection
从.subscribe
而不是物品接收Subscription
。你不能在subscribe
内返回,所以你的代码应该是这样的:
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 包都是问题所在。
对不起,我无法进一步澄清这个问题。也许其他人将来会遇到同样的问题,可以在此处添加。