AngularFire2 的 database.list 是保存引用还是实际获取数据?
Does AngularFire2's database.list hold a reference or actually grab data?
我在遵循基本的 AngularFire2 docs,一般格式似乎是:
const items = af.database.list('/items');
// to get a key, check the Example app below
items.update('key-of-some-data', { size: newSize });
我的困惑是,在源代码中,调用 database.list() 似乎获取了列出的 url 处的所有数据(第 114 行 here)
任何人都可以帮助阐明它是如何工作的吗?如果它确实获取了所有数据,是否有更好的方法在不这样做的情况下获取参考?还是我应该单独引用每个特定的 URL?
谢谢!
当您创建 AngularFire2 list 时,它包含一个内部 Firebase 引用 - 可通过列表的 public $ref
属性.
访问
该列表是一个 Observable
- 它用作从数据库读取的接口 - 并包括一些用于写入数据库的附加方法:push
、update
和 remove
.
在你问题的代码中,你只调用了 update
方法,并没有订阅可观察对象,因此没有数据从数据库加载到内存中:
const items = af.database.list('/items');
// to get a key, check the Example app below
items.update('key-of-some-data', { size: newSize });
只有当订阅了 observable 时,value
和 child_...
事件的侦听器才会添加到 ref 中,并且列表会构建并维护一个通过 observable 发出的内部数组.所以如果你只是调用写入数据库的方法,它不会加载任何数据。
AngularFire2 object的实现方式类似。
我在遵循基本的 AngularFire2 docs,一般格式似乎是:
const items = af.database.list('/items');
// to get a key, check the Example app below
items.update('key-of-some-data', { size: newSize });
我的困惑是,在源代码中,调用 database.list() 似乎获取了列出的 url 处的所有数据(第 114 行 here)
任何人都可以帮助阐明它是如何工作的吗?如果它确实获取了所有数据,是否有更好的方法在不这样做的情况下获取参考?还是我应该单独引用每个特定的 URL?
谢谢!
当您创建 AngularFire2 list 时,它包含一个内部 Firebase 引用 - 可通过列表的 public $ref
属性.
该列表是一个 Observable
- 它用作从数据库读取的接口 - 并包括一些用于写入数据库的附加方法:push
、update
和 remove
.
在你问题的代码中,你只调用了 update
方法,并没有订阅可观察对象,因此没有数据从数据库加载到内存中:
const items = af.database.list('/items');
// to get a key, check the Example app below
items.update('key-of-some-data', { size: newSize });
只有当订阅了 observable 时,value
和 child_...
事件的侦听器才会添加到 ref 中,并且列表会构建并维护一个通过 observable 发出的内部数组.所以如果你只是调用写入数据库的方法,它不会加载任何数据。
AngularFire2 object的实现方式类似。