代码之家  ›  专栏  ›  技术社区  ›  Lemon Kazi

从两个表查询Firebase数据

  •  0
  • Lemon Kazi  · 技术社区  · 6 年前

    我是firebase的新手。我做了一些研究,从中我学会了如何通过get方法获取json数据。我在postman/curl with condition中使用了该url,并从一个表中得到了结果。(chat\u room)现在我想使用另一个表的表id获取结果(chat\u room\u消息)

    从chat\u room\u message中,我只想获取上一条消息,其中chat\u room\u id=上一个表中的room\u id(chat\u room)

    目前,我使用两个请求从另一个表中获取聊天室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的post请求。我只想要聊天室id和一个请求中的最后一条消息。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Frank van Puffelen    6 年前

    没有与SQL等效的 JOIN 在Firebase中建造。您必须分别从两个位置读取实体。

    你怎么了 可以 do设置为 附加的 此用例的数据库中的数据结构。所以这将是一个 latest_message_tech_guard 或者类似的东西。

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

    有关详细介绍,请参阅 NoSQL data modeling 然后看着 Firebase for SQL developers