【问题标题】:Firebase data query from two table来自两个表的 Firebase 数据查询
【发布时间】:2018-10-23 00:45:42
【问题描述】:

我是火力基地的新手。我做了一些研究,从我的研究中我学会了如何通过 GET 方法获取 json 数据。我在 postman/curl 中使用该 url 并从一个表中获取我的结果。(chat_room)现在我想使用另一个表中的表 id 获取结果(chat_room_message)

从 chat_room_message 我只想从上一张表(chat_room)获取最后一条消息,其中 chat_room_id=room_id

目前我正在使用两个请求从另一个表中获取聊天室 ID 和消息

//get chat room id
$chatRoom = $this->Firebase->controll(null, 'GET', 'chat_room.json?orderBy="tech_guar"&equalTo="' . $userConcat . '"');

$lastChatMessage = '';
$chat_room_id = '';

if (!empty($chatRoom)) {
    $chat_room_id = array_keys($chatRoom)[0];
    //last message from chat history 
    $lastChatMessage = $this->Firebase->controll(null, 'GET', 'chat_room_messages.json?orderBy="chat_room_id"&equalTo="' . $chat_room_id . '"&limitToLast=1');
}

现在我只需要减少对 firebase 的发布请求。我只需要一个请求中的聊天室 ID 和最后一条消息。

【问题讨论】:

    标签: php firebase curl firebase-realtime-database postman


    【解决方案1】:

    Firebase 中没有与 SQL 的 JOIN 结构等效的功能。您必须分别从这两个位置读取实体。

    可以做的是在你的数据库中为这个用例设置一个附加数据结构。所以那将是latest_message_tech_guard 或类似的东西。

    这意味着您存储更多数据,并且需要在每次写入时更新该数据。但优点是阅读此用例所需的信息是微不足道的。当您使用 NoSQL 数据库时,这种写入速度与读取速度的权衡非常常见。

    如需了解精彩介绍,请参阅NoSQL data modeling 并观看Firebase for SQL developers

    【讨论】:

    • 感谢您的回答并向我展示正确的方式。现在我可以理解我必须做什么了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多