带有path和equalTo布尔值的Firebase orderByChild不返回任何内容

时间:2019-03-05 07:22:55

标签: javascript typescript firebase firebase-realtime-database

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

当我运行这样的查询时:

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

我从查询中什么也没收到。据我所知,这应该行得通,但是我有点茫然为什么不行。

1 个答案:

答案 0 :(得分: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....