[英]How to retrieve data from firebase realtime database based on child value
嗨,我对 Firebase 实时数据库很陌生,这是我的第一个项目。 对不起,如果这是一个愚蠢的问题。
我按如下方式保存我的数据。
firebase 数据库结构:
现在我想使用 student_id 变量检索学生参与的所有家长聊天 ID。
我尝试按照这个SO question和这个结构数据库并检索数据文档,但它没有检索值。 有人有想法吗?
我建议将您的学生所在的聊天室 ID 保存在单独的位置。 例如:
Path:
“/users/$uid/chatrooms”
Data:
{
0: 350,
1: 423
}
因此,您可以在获取聊天室数据之前先检索聊天室 ID。
import { initializeApp } from “firebase”;
import { getDatabase, get, set, ref } from “firebase/database”;
const userChatroomIdsRef = ref(db, ‘/users/${uid}/chatrooms‘);
get(userChatroomIdsRef).then(result => {
const chatroomIds = result.val();
if (!(chatroomIds && chatroomIds instanceof Array)) return; // firebase will return null if its an empty array.
const getChatroomInfoPromises = chatroomIds.map(id => get(ref(db, ‘/chat/${id}/${uid}’)).then(result => result.val());
Promise.all(getChatroomInfoPromises).then(chatroomInfoArray => { YOUR LOGIC HERE });
});
从聊天室中删除/添加学生现在变得很简单,因为您只需更改聊天室 ID 的数组即可。
const userChatroomIdsRef = ref(db, ‘/users/${uid}/chatrooms‘);
get(userChatroomIdsRef).then(result => {
const oldIds = result.val();
const newChatroomIds = oldIds.filter(id => id !== ID TO DELETE);
return set(userChatroomIdsRef, newChatroomIds)
});
这当然是假设你知道你的 student_id 的 uid。 如果您不知道每个 student_id 有什么 uid,则必须存储一个引用。 我建议将所有学生信息保存在“/users/$uid/”目录中。 您可以在此处保存 studentId,以便以编程方式使用它。
在所有其他 firebase 逻辑中,我会尝试使用本机 firebase uid 进行查询。 这将使您的生活更轻松。
将信息组织在数据库中总是好的,这样您的逻辑就很简单。
请检查我的代码是否有语法错误; 这是我在 iPhone 上写的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.