当前位置: 首页 > 知识库问答 >
问题:

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

呼延卓
2023-03-14

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

版本:

  • 火基:5.0。3
  • 角火2:5.0。0-rc。10
  • rxjs6.2。0

现在,我尝试使用迁移指南:迁移指南AngularFire2版本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() }))
    )
  )

我得到以下例外情况:

参数的类型'操作函数'是不能分配给参数的类型'UnaryFunction,观察

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

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

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

我已经试过RXJS的两个不同的操作符了

从rxjs/运算符导入{map};从rxjs/运算符/map导入{map};

谢谢你的帮助。

共有2个答案

相俊迈
2023-03-14

我让它运行。

我不知道真正的问题是什么。但我完全删除了我的本地存储库,并获得了所有新文件。

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

很抱歉,我不能澄清更多的问题。也许其他人将来会有同样的问题,可以在这里添加。

纪枫
2023-03-14

我不知道这是否是问题所在,但有几点观察:

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

 类似资料:
  • 问题内容: 我是python(PYTHON 3.4.2)的新手,我正在尝试制作一个可进行加法和除法运算的程序,以查找用户输入的平均值或均值,但我不知道如何添加数字接收。 当我在命令提示符下打开程序时,它接受我输入的数字,并且如果我使用打印功能,也将打印它,但不会将数字加起来。 我收到此错误: 我的代码如下: 任何帮助将不胜感激。 问题答案: 将输入作为字符串 您要告诉用户使用逗号分隔输入,因此需要

  • 注意:如果friend函数只是在类中声明并在外部实现,那么Clang和GCC都会拒绝该代码。

  • 对stackoverflow来说是全新的,所以如果我犯了任何错误,请原谅我 我现在正在努力学习Java,我的if语句遇到了一些问题 在下面的代码块中,我遇到了一个错误: 不兼容的操作数类型die和int 我知道错误告诉我要修复什么,但我不太确定如何着手并实际修复它。 有什么建议吗?

  • 我创建了Angular2 Typescript项目。我有很多表格,所以我想有一个类似基本组件的东西。 这是我的基本组件: 现在有我的子组件。我想从http获取所有项目,然后将其分配给基类 知道如何从订阅方法访问基字段吗?

  • 请看下面的代码。我使用Apache Derby作为嵌入式数据库 此代码出现以下错误 在这里,我试图做的是,获取全名,它作为FirstName、MiddleName和LastName存储在数据库中。 示例:名字-彼得,中间名-梅塔,姓氏-约翰逊 然后我试着得到“彼得·梅塔·约翰逊”。这就是为什么我使用运算符将值合并到3列中。 为什么我得到这个错误?这在MSSQL Server中有效,但在Derby中

  • 问题内容: 每当我运行这个程序我都会得到这个 我该怎么做才能将pyc除以tpy? 问题答案: 通过将它们变成整数: 在python 3中,该函数返回一个字符串。总是。这是对Python 2的更改;该功能已重命名为。