Слушайте обновления в реальном времени в Firestore, не загружая все исходные данные - PullRequest
1 голос
/ 16 мая 2019

Я разработал скрипт узла, который прослушивает изменения в коллекции Firestore и пересылает их в службу REST:

const db = admin.firestore();
const collectionRef = db.collection('users');

var collObserver = collectionRef.onSnapshot(querySnapshot => {
        let changes = querySnapshot.docChanges();

        changes.forEach(change => {
           console.log("Change", change.type, change.doc.id, change.doc.data())
           // Do stuff with changes
        });
    }, err => {
        console.log(`Encountered error: ${err}`);
    }
);

Однако, когда скрипт загружает метод onSnapshot, запускается первоначальный запрос дляполная коллекция.Это проблема, потому что моя коллекция может содержать до миллиона записей, и узлу сценария нет необходимости загружать и управлять всеми из них, он должен только получать изменения.

Я не вижулюбой вариант для этого в официальном SDK.Есть ли какие-нибудь хаки / решения для проблемы?

1 Ответ

0 голосов
/ 16 мая 2019

Слушатели запросов всегда получают все соответствующие документы, которые будут сопоставлены с запросом.Вы не можете это изменить.Единственное, что вы можете изменить, это ваш запрос.В настоящее время ваш запрос запрашивает все документы в коллекции, и вам придется сузить его с помощью фильтра.

Вместо этого вы можете убедиться, что ваш запрос запрашивает только столько данных, сколько ему нужно.Если ваши документы располагаются в обычном порядке, попробуйте прикрепить метку времени к каждому из документов и запросить только те документы, которые являются новыми с момента последнего выполнения запроса.Если у вас нет какой-то «контрольной точки», чтобы выяснить, что нового против старого, тогда вам будет трудно разобраться с этим.

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