【问题标题】:How to correctly query list in firebase/angularfire?如何正确查询firebase/angularfire中的列表?
【发布时间】:2017-07-08 18:34:04
【问题描述】:

我有这个结构:

我发现了这个:https://github.com/angular/angularfire2/blob/master/docs/4-querying-lists.md,我还阅读了 firebase 文档。

我试试这个:

return this.db.list(`${this.API_EVENTS_PATH}`, {
  query: {
    equalTo: {
      value: 'sharikov.vladislav@gmail.com',
      key: 'from'
    }
  }
});

这没有给出任何东西:空数组。为什么?

另一个问题是:如何按 2 个字段过滤项目?例如,我需要from=sharikov.vladislav@gmail.com&status=ACCEPTED

FB 怎么可能做到这一点?

【问题讨论】:

    标签: javascript angular firebase firebase-realtime-database angularfire2


    【解决方案1】:

    关于你的第一个问题。

    在使用 EqualTo 过滤器之前,首先应该有一个 OrderBy 过滤器...这个 OrderBy 过滤器告诉查询 EqualTo 应该引用哪个字段...所以您的查询应该如下所示。

    let path = this.API_EVENTS_PATH;
    return db.list(path , {
      query: {
        orderByChild: 'from',
        equalTo: 'sharikov.vladislav@gmail.com',
      }
    });
    

    关于你的第二个问题

    如何按 2 个字段过滤项目

    在像 firebase 这样的 Nosql 数据库中,通常只允许按 1 个字段进行过滤。考虑到如何组织数据库,所有其他操作都已完成。查看这个 firebase video,它向您展示了如何在 firebase 数据库上进行正常的 SQL 查询。享受

    【讨论】:

    • “在像 Firebase 这样的 Nosql 数据库中,通常只允许过滤 1 个字段”有很多 NoSQL 数据库允许过滤多个属性。这只是 Firebase 的限制。我还建议在这里阅读我关于过滤多个值的答案:stackoverflow.com/questions/26700924/…,它涵盖了比大卫的视频更多的场景。
    猜你喜欢
    • 2017-06-28
    • 2014-08-17
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多