Используйте функции Firebase для создания JOIN в запросах Firestore - PullRequest
0 голосов
/ 27 мая 2019

В соответствии с этим ответом ссылки Firestore нельзя использовать для запросов, похожих на JOIN, т. Е. Для получения ссылочного документа и ссылочного документа в одном обращении к базе данных. Это может быть проблемой с производительностью, поскольку затраты на сетевые задержки применяются для каждого обхода базы данных.

Задержка в сети является проблемой, только если вы не находитесь близко к центру обработки данных, что означает, что если вы выполняете соединение на стороне сервера, т. Е. В центре данных Google, где работает Firestore, то это не должно быть проблемой.

Можем ли мы использовать Firebase Functions для реализации этой функции в общем виде? Я имею в виду сервис, реализованный в Firebase Functions, который находится между клиентом и базой данных. Большинство запросов просто передаются в базу данных (where, orderBy, limit и т. Д. Все еще должны быть возможны), но должен быть дополнительный параметр запроса populate: true. Если этот параметр присутствует и для него задано значение true, ссылочные документы также возвращаются.

Возможно, также необходимо указать , какие документы должны быть populate d.

1 Ответ

2 голосов
/ 27 мая 2019

Конечно, звучит так, будто вы можете попробовать. Вы все еще можете рассчитывать на оплату всех документов, прочитанных по тем запросам, которые вы используете, даже если вы не вернете это количество клиенту.

Если вам действительно нужно выполнить много объединений, обычно лучше предварительно рассчитать объединения в другой коллекции и вместо этого запросить у клиента. Тогда у вас есть преимущество в том, что у клиента есть локальный кеш, который помогает как по скорости, так и по стоимости.

Но ничто не мешает вам реализовать функцию, которая делает это, если это то, что вам нужно.

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