地图操作员.不同的函数类型和访问器



我最近在我的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 包都是问题所在。

对不起,我无法进一步澄清这个问题。也许其他人将来会遇到同样的问题,可以在此处添加。

最新更新