#javascript #firebase #google-cloud-firestore
#javascript #firebase #google-облако-firestore
Вопрос:
Я пытаюсь выполнить следующий запрос с помощью Firestore REST API, и я нахожу, что документация очень ограничена для более сложных запросов. В принципе, я хочу использовать WHERE В запросе.
const allowedIds = ['xxxx', 'zzzz', 'yyyy'];
let myQuery = firebase.firestore().collection('myCollection').where(firebase.firestore.FieldPath.documentId(), 'in', allowedIds);
Этот вариант работает отлично, но теперь я хочу переделать его. Вот что я пробовал до сих пор:
const allowedIds = ['xxxx', 'zzzz', 'yyyy'];
'structuredQuery': {
'from': [{
'collectionId': 'myCollection',
}],
'where': {
'fieldFilter': {
'field': {
'fieldPath': firebase.firestore.FieldPath.documentId(),
},
'op': 'IN',
'arrayValue': {
'values': [
{
'stringValue': 'xxxx',
},
{
'stringValue': 'zzzz',
},
],
},
},
},
},
Похоже, что проблема заключается в использовании firebase.firestore.FieldPath.documentId() для ссылки на идентификатор документа, но есть ли другой способ добиться этого?
Сообщение об ошибке, которое я в настоящее время получаю:
«Недопустимое значение в файле ‘structured_query.where.field_filter.field’ (field_path), запуск объекта в скалярном поле, получена недопустимая полезная нагрузка JSON. Неизвестное имя «arrayValue» в ‘structured_query.where.field_filter’: Не удается найти поле.»
Моя структура данных: у меня есть коллекции транспортных средств и пользователей. У пользователей есть поле под названием транспортные средства, которое представляет собой массив строк (идентификаторы документов коллекции транспортных средств). Поэтому я хотел бы запросить коллекцию транспортных средств, ГДЕ В user.vehicles
Комментарии:
1. Не могли бы вы привести пример своей структуры данных, чтобы попытаться воспроизвести запрос на моей стороне?
2. @Emmanuel У меня есть коллекции «транспортные средства» и «пользователи». У пользователей есть поле с именем «транспортные средства», которое представляет собой массив строк (идентификаторы документов коллекции транспортных средств). Итак, я хотел бы запросить коллекцию транспортных средств, ГДЕ В user.vehicles
3. Вы должны обновить свой вопрос примером этих коллекций, которые могли бы помочь попытаться воспроизвести проблему и дать хороший ответ.
Ответ №1:
Попробуйте заменить firebase.firestore.FieldPath.documentId()
на "__name__"
.
Комментарии:
1. К сожалению, проблема не решена. Все еще получаю ту же ошибку. На самом деле заставляет меня думать, что вместо этого я неправильно передаю arrayValue.