firebase - 如何获取 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 => {
})
解决方案
这是不可能的。实时数据库没有子字符串查询。您可以做的最好的事情是在值中找到前缀字符串。
推荐阅读
- authentication - 一个生产 IIS 服务器询问凭据,其他服务器完全接受 Windows 身份验证
- jenkins - Jenkins 管道无法在 pod 中执行 docker 命令
- java - 为什么这段代码的结果是不确定的?
- sql-server - 创建名称包含变量的表
- java - 如何从多部分文件中提取正文和文件名?
- c++ - 为什么使用“新”运算符?
- python-3.x - 使用 unittest.mock,如何模拟成员字段的方法?
- javascript - 如何更改 D3 矩形中现有的 html 文本?
- javascript - 添加一个大数并返回一个非科学计数法数字
- javascript - 在 React js 中使用一些渲染数组元素