我最近在我的Ionic项目中更新了Firebase和AngularFire2
版本:
现在我尝试使用迁移指南将项目从常规地图升级到管道: Migration guide AngularFire2 version5
但是,如果我对以下代码块使用完全相同的示例:
///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;回报:任何; } []>>”
参数类型'source'和'source'不兼容。
类型'Observable'不能分配给'Observable'类型。存在两种具有此名称的不同类型,但它们是不相关的。
属性'source'在'Observable'类型中受到保护,但在'Observable'类型中是public。
我已经尝试过来自rxjs的两个不同的运算符
从'rxjs / operators'导入{map}; 从'rxjs / operators / map'中导入{map};
我感谢任何帮助。
答案 0 :(得分:0)
好吧,我不知道这是不是问题,而是一些观察:
let dataBaseCollection
正在从Subscription
收到.subscribe
,而非项目。你不能在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))
)
答案 1 :(得分:0)
我让它运行。
我没有真正的线索,实际问题是什么。但是我完全删除了我的本地存储库并获取了所有新文件。
然后我重新安装了所有NPM文件。这方面的某个地方是我的问题。我猜,我的任何npm软件包都是问题所在。
对不起,我无法更多地澄清这个问题。也许其他人将来会遇到同样的问题,可以在这里添加。