- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我不是很喜欢 JavaScript\TypeScript,我有一些问题无法理解这个例子究竟是如何用于 Angular 应用程序以从 Firebase 数据库检索数据的。它工作正常,但我对它的逻辑有些怀疑(我认为它应该与函数式编程范式有关,我不太喜欢这个话题)。
所以我有这段代码使用 Angularfire2 库(新的 ^5.0.0-rc.4 版本)来查询我的 Firebase 数据库:
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'app';
courses$: Observable<{}[]>;
constructor(private db: AngularFireDatabase) {
console.log("TEST");
this.courses$ = db.list('courses').snapshotChanges()
.map(actions => {
return actions.map(action => ({
$key: action.key,
value: action.payload.val(),
}))
});
this.courses$.subscribe(console.log);
}
}
所以 courses$
变量它应该是 Observable
的数组(这是正确的吗?)。据我所知Observable
是一个对象,它发出可以订阅的事件。它将包含从 Firebase 数据库中检索到的列表。
这段代码:
db.list('courses')
应该简单地用 courses
创建绑定(bind)节点作为列表进入我的 Firebase 数据库(它本身包含一个节点列表)。但我不太确定我的解释是否正确,或者我是否遗漏了什么。
然后在这个绑定(bind)上称为 snapshotChanges()
那应该返回 Observable
.
这里我有以下疑惑:
这Observable
是与我正在检索的类(class)列表中的单个元素相关,还是与从数据库中检索到的整个类(class)列表相关? (我认为是第二个,但我不太确定)。
snapshotChanges()
返回的确切类型方法似乎是Observable<SnapshotAction[]>
.那么具体是什么意思。它是一个具有 SnapshotAction
数组的 Observable。作为类型。究竟是什么,究竟是什么意思?
然后就是这个map()
功能:
.map(actions => {
return actions.map(action => ({
$key: action.key,
value: action.payload.val(),
}))
});
我在这里被困住了……我认为这是功能更强大的部分。我认为它过去常常在每次观察到的东西发生变化时创建我的输出 courses$
.
阅读文档似乎是 map()
方法创建一个新数组(实际上我正在创建一个数组),结果是对该数组中的每个元素调用提供的函数。
所以这应该意味着这是对数组的每个元素调用的函数:
actions => {
return actions.map(action => ({
$key: action.key,
value: action.payload.val(),
}))
}
但是什么数组?我觉得应该是之前的Observable<SnapshotAction[]>
由 snapshotChanges()
返回方法。
我完全不确定这个断言....
所以这个想法是每次订阅的 courses$
发生变化时可观察到 map()
方法在新数据上执行...但我认为我遗漏了很多中间内容
这究竟是如何工作的?
最佳答案
AngularFire provides methods that stream data back as redux compatible actions.
和 snapshotChanges
特别是:
Returns an Observable of data as a synchronized array of AngularFireAction[].
所以这个方法返回一个可观察的数据库操作数组。
关于map
函数,这里
return actions.map(action => ({
$key: action.key,
value: action.payload.val(),
}))
该示例只是遍历操作数组并从 action.payload.val()
中检索与每个操作关联的数据。 map
这里不是一个可观察的运算符,它是一个数组上的方法。
关于angular - 这个使用 Angularfire2 从 Firebase 数据库中检索列表的示例到底是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48093187/
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Sample data for IPv6? 除了 wireshark 在其网站上提供的内容之外,是否有可以下
我正在寻找可以集成到现有应用程序中并使用多拖放功能的示例或任何现成的解决方案。我在互联网上找到的大多数解决方案在将多个项目从 ListBox 等控件拖放到另一个 ListBox 时效果不佳。谁能指出我
我是 GATE Embedded 的新手,我尝试了简单的示例并得到了 NoClassDefFoundError。首先我会解释我尝试了什么 在 D:\project\gate-7.0 中下载并提取 Ga
是否有像 Eclipse 中的 SWT 示例那样的多合一 JFace 控件示例?搜索(在 stackoverflow.com 上使用谷歌搜索和搜索)对我没有帮助。 如果它是一个独立的应用程序或 ecl
我找不到任何可以清楚地解释如何通过 .net API(特别是 c#)使用谷歌计算引擎的内容。有没有人可以指点我什么? 附言我知道 API 引用 ( https://developers.google.
最近在做公司的一个项目时,客户需要我们定时获取他们矩阵系统的数据。在与客户进行对接时,提到他们的接口使用的目前不常用的BASIC 认证。天呢,它好不安全,容易被不法人监听,咋还在使用呀。但是没办法呀,
最近在做公司的一个项目时,客户需要我们定时获取他们矩阵系统的数据。在与客户进行对接时,提到他们的接口使用的目前不常用的BASIC 认证。天呢,它好不安全,容易被不法人监听,咋还在使用呀。但是没办法呀,
我正在尝试为我的应用程序设计配置文件格式并选择了 YAML。但是,这(显然)意味着我需要能够定义、解析和验证正确的 YAML 语法! 在配置文件中,必须有一个名为 widgets 的集合/序列。 .这
你能给我一个使用 pysmb 库连接到一些 samba 服务器的例子吗?我读过有类 smb.SMBConnection.SMBConnection(用户名、密码、my_name、remote_name
linux服务器默认通过22端口用ssh协议登录,这种不安全。今天想做限制,即允许部分来源ip连接服务器。 案例目标:通过iptables规则限制对linux服务器的登录。 处理方法:编
我一直在寻找任何 PostProjectAnalysisTask 工作代码示例,但没有看。 This页面指出 HipChat plugin使用这个钩子(Hook),但在我看来它仍然使用遗留的 Po
我发现了 GWT 的 CustomScrollPanel 以及如何自定义滚动条,但我找不到任何示例或如何设置它。是否有任何示例显示正在使用的自定义滚动条? 最佳答案 这是自定义 native 滚动条的
我正在尝试开发一个 Backbone Marionette 应用程序,我需要知道如何以最佳方式执行 CRUD(创建、读取、更新和销毁)操作。我找不到任何解释这一点的资源(仅适用于 Backbone)。
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题?通过 editing this post 添加详细信息并澄清问题. 去年关闭。 Improve this
我需要一个提交多个单独请求的 django 表单,如果没有大量定制,我找不到如何做到这一点的示例。即,假设有一个汽车维修店使用的表格。该表格将列出商店能够进行的所有可能的维修,并且用户将选择他们想要进
我有一个 Multi-Tenancy 应用程序。然而,这个相同的应用程序有 liquibase。我需要在我的所有数据源中运行 liquibase,但是我不能使用这个 Bean。 我的应用程序.yml
我了解有关单元测试的一般思想,并已在系统中发生复杂交互的场景中使用它,但我仍然对所有这些原则结合在一起有疑问。 我们被警告不要测试框架或数据库。好的 UI 设计不适合非人工测试。 MVC 框架不包括一
我正在使用 docjure并且它的 select-columns 函数需要一个列映射。我想获取所有列而无需手动指定。 如何将以下内容生成为惰性无限向量序列 [:A :B :C :D :E ... :A
$condition使用说明和 $param在 findByAttributes在 Yii 在大多数情况下,这就是我使用 findByAttributes 的方式 Person::model()->f
我在 Ubuntu 11.10 上安装了 qtcreator sudo apt-get install qtcreator 安装的版本有:QT Creator 2.2.1、QT 4.7.3 当我启动
我是一名优秀的程序员,十分优秀!