如何在EmberFire中查询子集合?

时间:2019-06-14 23:14:43

标签: firebase google-cloud-firestore emberfire

我目前正在尝试使用EmberFire从FireStore提取数据。现在,我的收藏是/ users,我在那里存储了一个用户ID。在用户ID下,我创建另一个子集合,其中包含一个名为/ presets的数组。

我想使用EmberFire检索当前登录用户的预设。我该如何告诉EmberFire?

我尝试使用EmberFire获取其他数据,但效果很好。例如,从一个集合中获取文档可以很好地工作,我只是从未使用过子集合。因此是问题。

我想实现的目标是

this.store.query('/users/pLvAT0TSbAjsnXoVmMF7yEG3mkW2/presets')

获取(收集用户)->(文档pLvAT0TSbAjsnXoVmMF7yEG3mkW2)->(收集预设)中存储的数据。

我当然想使用传统的工作流程将预设中的文档转换为视图。

现在,我只能处理一个集合。我无法使用嵌套集合。

有人对如何解决这个问题有想法吗?

1 个答案:

答案 0 :(得分:0)

一般的答案是:

this.store.find('users', 'pLvAT0TSbAjsnXoVmMF7yEG3mkW2').then((user)=>{
  return user.get('presets');
})

但是它假设某些事情是通过“灰烬之路”完成的:

  1. User模型
  2. 有一个Preset模型
  3. hasManyUser之间存在Preset关系,如下所示:
// app/models/user.js
import DS from 'ember-data';
const { Model, attr, hasMany } = DS;

export default Model.extend({
  presets: hasMany('preset', { subcollection: true })
});

尽管当前版本的Emberfire(v3-rc2)不能与Subcollections很好地配合,但是您可以获取记录,但不能创建或更新记录。

来源:

  • Emberfire guides(现在有点空白,但希望有一天它会提供很好的信息)