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

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 =>

我最近在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 => 
    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操作符本身的问题。基本上,只要我运行调用,数据库集合中的内容就无关紧要。