Firebase Cloud Firestore - Как запросить две вложенные коллекции одновременно? - PullRequest
0 голосов
/ 02 июля 2018

Я хочу запросить две вложенные коллекции DocumentReference.

Я пытался сделать следующее:

var promise1 = admin.firestore().collection(`players/${id}/collection1`).get();
var promise2 = admin.firestore().collection(`players/${id}/collection2`).get();

return Promise.all(promise1, promise2)

Проблема, однако, заключается в том, что, выполнив следующее, я получаю следующую ошибку:

TypeError: (var) [Symbol.iterator] не является функцией на Function.all (родной) at exports.onSubmission.functions.firestore.document.onCreate (/user_code/index.js:671:20)

Итак, я попытался вложить их, как показано ниже, и все работало нормально.

 return admin.firestore().collection(`players/${id}/collection1`).get().then(foundersSnapshot => {
    return admin.firestore().collection(`players/${id}/collection2`).get().then(metricsSnapshot => {

Однако при развертывании я получаю предупреждение:

Избегайте вложенных обещаний

Итак, каковы лучшие практики в этом случае? Я бы предпочел сделать через Promise.all, но это не работает. Кроме того, он вывел бы две коллекции как результаты в then(results => { Так что, в этом случае, я мог бы смело рассматривать results[0] как "collection1" и `results [1] как" collection2 "?

1 Ответ

0 голосов
/ 02 июля 2018

Promise.all() требуется один параметр массива. Обратите внимание на квадратные скобки вокруг promise1 и promise2, которые делают из них встроенный массив:

Promise.all([promise1, promise2])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...