Как я могу избежать удушения? (или есть ли способ действительно получить пакетно?) - PullRequest
0 голосов
/ 01 мая 2018

Похоже, мои запросы Firestore удушаются! (см. рисунок ниже)

Если бы мне пришлось угадывать, я бы сказал, что регулирование происходит не в Firestore, а на самом деле в Chrome ... Я видел такой тип регулирования раньше.

Throttling in action

Один из способов обойти регулирование Chrome - объединить несколько запросов в один.

Когда я сижу здесь и думаю: «Интересно, может ли Firestore объединить эти запросы на чтение?», Я замечаю, что, по совпадению, запросы к Firestore на самом деле называются batchGet! Но, как ни странно, каждый запрос batchGet имеет только одно чтение:

It seems batchGet only gets one document

Итак, чтобы избежать удушения в Chrome, у меня возникает вопрос: как запросить несколько документов одновременно в Firestore? Я подозреваю, что это возможно, потому что, ну, есть конечная точка сервера с именем batchGet. Возможно ли это?

Большое спасибо!

1 Ответ

0 голосов
/ 01 мая 2018

Просто немного покопался в источнике, похоже, это невозможно. Метод транзакции .get () выглядит следующим образом:

Transaction.prototype.get = function (documentRef) {
    var _this = this;
    validateExactNumberOfArgs('Transaction.get', arguments, 1);
    var ref = validateReference('Transaction.get', documentRef, this._firestore);
    return this._transaction
        .lookup([ref._key])
        .then(function (docs) {
        if (!docs || docs.length !== 1) {
            return fail('Mismatch in docs returned from document lookup.');
        }
        var doc = docs[0];
        if (doc instanceof NoDocument) {
            return new DocumentSnapshot(_this._firestore, ref._key, null, false);
        }
        return new DocumentSnapshot(_this._firestore, ref._key, doc, false);
    });
};

Этот .lookup () принимает массив всех документов для помещения в запрос batchGet, и здесь он закодирован, чтобы иметь только один элемент в этом массиве.

Похоже, что невозможно получить несколько документов за один запрос batchGet.

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