我正在与Firebase实时数据库建立聊天。
假设用户1具有uid1,用户2具有uid2,则他们的chatId将为uid1_uid2(以asc排序)。 因此数据库chat /如下所示:
chat {
uid1_uid2: [message, message...],
uid4_uid2:[message, message...],
uid5_uid1:[message, message...],
uid11_uid8:[message, message...]
}
以下Firebase规则仅允许对话者访问对话:
"chat": {
"$chatId": {
".write": "$chatId.contains(auth.uid)",
".read": "$chatId.contains(auth.uid)"
}
}
我想获取在chatId中具有uid1的元素。所以预期的回报是
{
uid1_uid2: [message, message...],
uid5_uid1:[message, message...]
}
是否可以获取ID包含特定子字符串的元素?像...
databaseChat.child("contains uid1").on("value", snapshot => {
})
答案 0 :(得分:1)
这是不可能的。实时数据库没有子字符串查询。最好的办法是在值中找到前缀字符串。