Firebase данных запроса из двух таблиц - PullRequest
0 голосов
/ 13 мая 2018

Я новичок в пожарной базе. Я провел некоторое исследование, и из своего обучения я узнал, как получить данные JSON с помощью метода GET. Я использовал этот URL в postman / curl с условием и получил свой результат из одной таблицы. (Chat_room) Теперь я хочу получить результат, используя этот идентификатор таблицы из другой таблицы (chat_room_message)

Из chat_room_message я просто хочу получить последнее сообщение, где chat_room_id = room_id из предыдущей таблицы (chat_room)

В настоящее время я использую два запроса для получения идентификатора комнаты чата и сообщения из другой таблицы

//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. Я просто хочу идентификатор чата и последнее сообщение в одном запросе.

1 Ответ

0 голосов
/ 13 мая 2018

В Firebase нет эквивалента конструкции JOIN SQL. Вам придется читать объекты из обоих мест отдельно.

То, что вы можете сделать, - это настроить дополнительную структуру данных в вашей базе данных для этого варианта использования. Так что это будет latest_message_tech_guard или что-то в этом роде.

Это означает, что вы храните больше данных, и вам необходимо обновлять эти данные при каждой записи. Но преимущество в том, что чтение информации, необходимой для этого варианта использования, тривиально. Этот тип компромисса между скоростью записи и скоростью чтения очень распространен при использовании базы данных NoSQL.

Хорошие введения см. В Моделирование данных NoSQL и в Firebase для разработчиков SQL .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...