根据 Firebase 中的类别检索数据

use*_*050 1 javascript angularjs firebase firebase-realtime-database

我是 Firebase 的新手,我有一个关于检索一些数据的问题。假设我有以下数据结构:

JSON 的屏幕截图

我查询的目标是针对给定的国家/地区名称,我想检索其目的地数组包含该国家/地区的所有用户。例如:对于“Jordan”的查询,它将检索:user2 和 user3。

有人知道如何使用 Firbase Angular 进行这样的查询吗?

Fra*_*len 5

Firebase 没有与数组中的项目匹配的查询运算符。事实上:Firebase 建议不要在您遇到的情况下使用数组。相反,像这样存储数据:

advisors-countries: {
  user1: {
    destinations: {
      Angola: true,
      Australia: true
    }
  },
  user2: {
    destinations: {
      Angola: true,
      Austria: true,
      Jordan: true
    }
  },
  user3: {
    destinations: {
      Austria: true
      Egypt: true,
      Jordan: true
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用以下命令查询具有目标 Jordan 的用户:

var users = ref.child('advisors-countries').orderByChild('destinations/Jordan')
                                           .equalTo(true);
Run Code Online (Sandbox Code Playgroud)

然后将其绑定到您的 AngularJS 范围:

$scope.users = $firebaseArray(users);
Run Code Online (Sandbox Code Playgroud)

这种类型的数据结构称为索引,您经常会发现需要向 NoSQL 数据库添加特定索引以满足应用程序的查询要求。请参阅这篇关于 NoSQL 数据建模的文章,以获得有关该主题的良好介绍。