如何根据嵌套 child 中的键检索 firebase 数据?
How do I retrieve firebase data based on the key in a nested child?
假设我正在构建一个让用户管理行程的应用程序。创建行程后,可以在其中添加任意数量的用户。我希望将此数据存储在一个地方,然后每个用户都能够检索该人所在的行程。我的数据如下所示:
-trips
-<trip-id>
-title
-budget
-etc
-people
-<person-id>
-name
-uid
-<person-id>
-name
-uid
-<trip-id>
-
-
-
此行程将包含所有用户创建的所有行程。为了向任何人显示他们的行程,我只想检索该人所在的列表。
这是我尝试做的,包括其他类似的方法。
rootReference.child("trips").orderByChild("uid").equalTo(FirebaseAuth.instance.currentUser.uid).addValueEventListener(object:ValueEventListener){
override fun onDataChange(snapshot: DataSnapshot) {
//this should only return the trips that current user exists in.
}
}
我已经查看了有关在 firebase 上进行搜索和过滤的文档,但没有任何内容显示基于过滤的嵌套键。一个具体的例子是 this。我完全理解。例如,如果我尝试根据标题、预算等主要属性过滤我的旅行,它会起作用,但当我使用嵌套 child.
的属性时则不起作用
我可以使用其他什么方法来根据嵌套键进行过滤,或者我应该以不同的方式构建数据?非常感谢任何帮助。
Firebase 实时数据库查询在您查询路径正下方的 child 个节点的平面列表上运行。
因此您 order/filter 的值必须位于每个直接 child 节点下的 fixex 路径中。由于您的 uid
并非如此,您无法在所有行程中查询这些行程的所有用户的 UID。
您可以在一次旅行中查询用户的 UID(然后取回该用户),或者您可以在所有旅行中查询旅行本身的属性,例如其标题或预算。
如果您想查询所有用户的所有行程,请考虑保留一个额外的列表,您将用户的 UID 作为键,然后将他们的所有行程放在该列表下:
"user_trips": {
"uid1": {
"tripid1": true,
"tripid2": true
},
"uid2": {
"tripid2": true,
"tripid3": true
}
}
另见:
假设我正在构建一个让用户管理行程的应用程序。创建行程后,可以在其中添加任意数量的用户。我希望将此数据存储在一个地方,然后每个用户都能够检索该人所在的行程。我的数据如下所示:
-trips
-<trip-id>
-title
-budget
-etc
-people
-<person-id>
-name
-uid
-<person-id>
-name
-uid
-<trip-id>
-
-
-
此行程将包含所有用户创建的所有行程。为了向任何人显示他们的行程,我只想检索该人所在的列表。
这是我尝试做的,包括其他类似的方法。
rootReference.child("trips").orderByChild("uid").equalTo(FirebaseAuth.instance.currentUser.uid).addValueEventListener(object:ValueEventListener){
override fun onDataChange(snapshot: DataSnapshot) {
//this should only return the trips that current user exists in.
}
}
我已经查看了有关在 firebase 上进行搜索和过滤的文档,但没有任何内容显示基于过滤的嵌套键。一个具体的例子是 this。我完全理解。例如,如果我尝试根据标题、预算等主要属性过滤我的旅行,它会起作用,但当我使用嵌套 child.
的属性时则不起作用我可以使用其他什么方法来根据嵌套键进行过滤,或者我应该以不同的方式构建数据?非常感谢任何帮助。
Firebase 实时数据库查询在您查询路径正下方的 child 个节点的平面列表上运行。
因此您 order/filter 的值必须位于每个直接 child 节点下的 fixex 路径中。由于您的 uid
并非如此,您无法在所有行程中查询这些行程的所有用户的 UID。
您可以在一次旅行中查询用户的 UID(然后取回该用户),或者您可以在所有旅行中查询旅行本身的属性,例如其标题或预算。
如果您想查询所有用户的所有行程,请考虑保留一个额外的列表,您将用户的 UID 作为键,然后将他们的所有行程放在该列表下:
"user_trips": {
"uid1": {
"tripid1": true,
"tripid2": true
},
"uid2": {
"tripid2": true,
"tripid3": true
}
}
另见: