запросить базу данных для документов, содержащих массив длиной> 0 - PullRequest
1 голос
/ 21 марта 2019

Можно ли запросить в firebase документы в коллекции, где количество элементов в массиве определенного поля больше 0

В моем примере у каждого документа есть поле с именем people, которое содержит массив целых чисел (или массив пуст).

Мой поиск всегда возвращает 0 документов, но у меня есть документы, которые я вижу при поиске в административной панели базы данных firestore.

import * as admin from 'firebase-admin';
import * as functions from 'firebase-functions';
admin.initializeApp();

var db = admin.firestore();
export const helloWorld = functions.https.onRequest(function(req,res)
{
    var all_users = db.collection('users');
    var query = all_users.where("people.length", ">", 0).get().then(snapshot => 
    {
        let docs = snapshot.docs;

        //return 1st document found

        res.send(docs[0].data());
    });

    query.catch(error =>
    {
        res.status(500).send(error);
    });

});

1 Ответ

3 голосов
/ 21 марта 2019

Это невозможно с Firestore.Единственное, что вы можете запросить у полей типа массива, это точное содержимое некоторого элемента в массиве.

Ваша альтернатива для фильтрации по размеру любого массива - это использовать целочисленное поле для записи количества элементов вмассив и синхронизировать его с изменениями в этом массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...