Firestore REST API ГДЕ В запросе

#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.