Вы можете использовать запрос where()
на основе documentId sentinel, как указано ниже:
...collection('cart').where(firebase.firestore.FieldPath.documentId(), '==', ID_TO_MATCH)
, но я не думаю, что это что-то изменит с точки зрения цены или представление. На самом деле, «минимальная плата за чтение одного документа для каждого выполняемого вами запроса, даже если запрос не возвращает результатов», как объяснено в do c. Таким образом, чтение do c с помощью
collection('cart').doc(ID_TO_MATCH)
или с помощью
collection('cart').where(firebase.firestore.FieldPath.documentId(), '==', ID_TO_MATCH)
не имеет никакого значения для IMO.
Другая возможность будет использовать запрос collectionGroup . Проблема, в данном конкретном случае c, заключается в том, что при запросе группы сбора по FieldPath.documentId()
предоставленное значение должно привести к допустимому пути документа . См. ТАК сообщение для более подробной информации. Так что это не будет работать с ID_TO_MATCH
...
Но , есть обходной путь: вы можете сохранить в ваших документах поле, которое имеет то же значение, что и идентификатор документа, а затем запрос collectionGroup будет работать.
Итак, с полем docId
в вашем документе, которое содержит значение идентификатора документа, вы можете написать следующий запрос:
const cartsQuery = db.collectionGroup('cart').where('docId', '==', ID_TO_MATCH);