Запрос через collectionGroup по имени - PullRequest
0 голосов
/ 16 мая 2019

Таким образом, с 8 мая 2019 года Firebase Firestore теперь поддерживает запросы вложенных коллекций с одинаковыми именами через collectionGroup('collectionName').

Есть ли способ получить несколько документов одного и того же docId в этих подколлекциях?

Вот небольшой наглядный пример того, чего я пытаюсь достичь.

collectionA
  - documentA
    : collectionB
      - documentC
  - documentB
    : collectionB
      - documentC

Допустим, я хочу получить оба этих documentC документа. Есть ли способ сделать это?

Текущий код, который я пытаюсь использовать, таков:

const docIdFieldPath = FieldPath.documentId()
admin.firestore().collectionGroup('collectionB').where(docIdFieldPath, '==', 'documentC').get().then(...)

Однако мне выдается ошибка:

INVALID_ARGUMENT: Resource name "projects/myProject/databases/(default)/documents/documentB" lacks "/" at index 86.

В документах по этому вопросу говорится, что необходимо создать индекс перед попыткой сделать запрос через collectionGroup, но если я попытаюсь сделать это через онлайн-индексный портал, я получу сообщение о том, что поле __name__ зарезервировано.

Я что-то упустил, или эта функция еще не поддерживается?

1 Ответ

1 голос
/ 16 мая 2019

Некоторые из команды Firestore сказали мне, что это не поддерживается. Вы не можете фильтровать на основе строки идентификатора документа. Мобильные SDK дают вам более приятное сообщение, но, очевидно, SDK nodejs - нет.

Вместо этого вы можете сохранить идентификатор документа в виде поля в самом документе и выполнить фильтрацию по этому полю.

...