Как получить коллекцию документов за один раз, используя массив идентификаторов, используя firebase? - PullRequest
1 голос
/ 29 апреля 2020

Я пытаюсь собрать приложение React 16.13.0 с помощью firebase. У меня есть следующий метод, в котором я хочу получить коллекцию документов все сразу, используя массив идентификаторов ...

async acceptMissions(userId: string, missionId: string[]) {
    const collection = this.getCollection("organizations").doc("1").collection("missions");
    let docs;
    try {
      docs = await collection.getAll(...missionIds).get();

Однако, строка

const collection = this.getCollection("organizations").doc("1").collection("missions");

умирает с ошибкой

TypeScript error in /Users/davea/Documents/workspace/resilience-app/src/app/model/User.ts(243,31):
Property 'getAll' does not exist on type 'CollectionReference<DocumentData>'.  TS2339

Как правильно получить коллекцию документов одновременно?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Если у вас есть <= 10 идентификаторов, которые вы хотите получить, вы можете использовать следующий запрос: </p>

db.collection("organizations").doc("1").collection("missions")
    .where("__name__", "in", ["docid1", "docid2", ... "docid10"]
    .get()

__name__ - зарезервированное имя, которое серверная часть использует для идентификатора документа. Как указано выше, in предложения могут иметь максимум 10 значений.

0 голосов
/ 29 апреля 2020

getAll () - это метод объекта Firestore, и только для серверных SDK, таких как nodejs. Он не доступен вообще в клиентских SDK.

Если у вас есть массив идентификаторов для выборки из коллекции, вам придется создать DocumentReference для каждого из них и вызвать get () для всех из них.

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