地图运营商。不同的功能类型和访问器

时间:2018-05-23 09:35:03

标签: firebase ionic-framework rxjs observable angularfire2

我最近在我的Ionic项目中更新了Firebase和AngularFire2

版本:

  • Firebase:5.0.3
  • AngularFire2:5.0.0-rc.10
  • rxjs 6.2.0

现在我尝试使用迁移指南将项目从常规地图升级到管道: 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};

我感谢任何帮助。

2 个答案:

答案 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软件包都是问题所在。

对不起,我无法更多地澄清这个问题。也许其他人将来会遇到同样的问题,可以在这里添加。