Я пытаюсь отфильтровать данные с помощью нескольких методов where()
, используя оператор array-contains
, однако у меня возникает следующая ошибка:
An error occured: Error: 3 INVALID_ARGUMENT:
A maximum of 1 'ARRAY_CONTAINS' filter is allowed.
По сути, у меня есть коллекция, содержащая следующие документы:
product1
- node_sku ['sku1', 'sku2', 'sku3' ]
product2
- node_sku ['sku4', 'sku5', 'sku6' ]
Тогда у меня есть мой массив с элементами, которые я хочу найти в базе данных:
const list = ['sku4', 'sku2']
Я хочу найти sku4
и sku2
, если найдет какие-либо результатыпредмет.
Моя проблема в том, что array-contains
не разрешено запускать более одного раза.
Вот код, который я использую для фильтрации:
const list = ['sku4', 'sku2'];
let database = firestore_db.collection('glasses');
let ref = database;
list.forEach( (val) => {
ref = ref.where('node_sku' , 'array-contains' , val);
});
ref.get()
.then( (snapshot) => glassesRequestComplete(snapshot, req, response))
.catch( (error) => glassesRequestError(error, response) );
Как вы заметили,моя проблема в том, что я перебираю свой массив list
, однако мой ref
выдает ошибку, поскольку я запускаю 'array-contains' несколько раз.
Я также пытался сравнить смассив:
ref.where('node_sku' , 'array-contains' , list);
который не возвращает ничего, я считаю, что массив-содержимое не сравнивается с массивами, может быть, только строки / числа / логические значения?
Кто-нибудь знает решение для этого безприходится запрашивать их индивидуально?
Спасибо