【问题标题】:Firebase orderByChild with path and equalTo boolean doesn't return anything带有路径和 equalTo 布尔值的 Firebase orderByChild 不返回任何内容
【发布时间】:2019-07-26 14:27:20
【问题描述】:

好的,所以我在实时数据库中的数据结构如下所示:

当我运行这样的查询时:

database.ref('access_lists').orderByChild('95577307/read').equalTo(true)

我从查询中完全没有收到任何信息。据我所知,这应该可行,但我有点不知道为什么它不可行。

【问题讨论】:

    标签: javascript typescript firebase firebase-realtime-database


    【解决方案1】:

    如果数字95577307, ... 有目的但不需要成为值,则您在另一个键中拥有一个键,这就是您没有价值的原因,通过改变您构建数据的方式将其用作键:

    access_lists: {
      95577307: {
        name: 'FelixJar1'
        read: true
        write: true
      }
    }
    
    

    这也将帮助您对读/写 equalTo(true) 的用户进行排序/过滤。 https://firebase.google.com/docs/database/web/structure-data#flatten_data_structures

    ============================================

    编辑回答您的回复

    这就是 Firebase 的做法:

    "posts": {
      "ts-functions": {
        "metrics": {       <===== it's the same key name
          "views" : 1200000,
          "likes" : 251000,
          "shares": 1200,
        },
        "title" : "Why you should use TypeScript for writing Cloud Functions",
        "author": "Doug",
      },
      "android-arch-3": {
        "metrics": {       <===== it's the same key name
          "views" : 900000,
          "likes" : 117000,
          "shares": 144,
        },
        "title" : "Using Android Architecture Components with Firebase Realtime Database (Part 3)",
        "author": "Doug",
      }
    },
    

    因为他们有一个键名 metrics,他们可以在 firebase 规则中对其进行索引,还可以过滤/排序/排序值,例如:metrics/views

    另一方面,你有995055869, 950336178....

    【讨论】:

    • 结构很重要,键代表不同的项目,键下的数字将是每个用户/组及其对该特定地图的权限。根据他们的文档,这应该可以工作:firebase.google.com/docs/database/web/lists-of-data
    • 更新答案以回复您的评论
    • 废话,我想我又回到了原点。谢谢。
    猜你喜欢
    • 2017-08-22
    • 1970-01-01
    • 2019-06-06
    • 2018-09-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    相关资源
    最近更新 更多