代码之家  ›  专栏  ›  技术社区  ›  Benjamin Schröder

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

  •  0
  • Benjamin Schröder  · 技术社区  · 6 年前

    我最近在我的离子工程中更新了firebase和angularfire2。

    版本:

    • 火碱:5.0.3
    • 角度2: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;return:any;[]>gt;”。

    参数“source”和“source”的类型不兼容。

    类型“observable”不能分配给类型“observable”。存在两种不同的具有此名称的类型,但它们是不相关的。

    属性“source”在类型“observable”中受保护,但在类型“observable”中受公共保护。

    我已经试过RXJS的两个不同的接线员了

    从'RXJS/Operators'导入映射; 从“rxjs/operators/map”导入map;

    我感谢你的帮助。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Fabricio    6 年前

    嗯,我不知道这是不是问题所在,但有几点看法:

    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))
    )
    
        2
  •  0
  •   Benjamin Schröder    6 年前

    我把它弄跑了。

    我没有真正的线索,实际的问题是什么。但我完全删除了我的本地存储库,并更新了所有文件。

    然后我重新安装了所有的NPM文件。在这方面的某个地方是我的问题。我想,我的任何一个NPM包都是问题所在。

    对不起,我不能再澄清这个问题了。也许其他人将来也会遇到同样的问题,可以在这里添加。