【问题标题】:How to get all elements whose id contains a particular substring?如何获取 id 包含特定子字符串的所有元素?
【发布时间】:2019-08-09 16:58:52
【问题描述】:

我正在使用 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 => {

})

【问题讨论】:

    标签: firebase firebase-realtime-database


    【解决方案1】:

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

    How to query firebase keys with a substring

    【讨论】:

    • 谢谢! databaseChat.orderByKey().endAt(uid1 + "\uf8ff").on() 按我的预期工作。它似乎像包含一样工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    • 2016-10-16
    相关资源
    最近更新 更多