首页 > 解决方案 > 如何获取 id 包含特定子字符串的所有元素?

问题描述

我正在与 firebase 实时数据库进行聊天。

假设 user1 有 uid1,user2 有 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 => {

})

标签: firebasefirebase-realtime-database

解决方案


这是不可能的。实时数据库没有子字符串查询。您可以做的最好的事情是在值中找到前缀字符串。

如何使用子字符串查询 Firebase 键


推荐阅读