我怎样才能避免节流? (或者,有没有办法真正批量获取?)

时间:2018-05-01 02:54:20

标签: firebase google-cloud-firestore

看起来我的Firestore请求受到限制! (见下图)

如果我不得不猜测,我会说这不是Firestore进行限制,它实际上是Chrome ......我之前见过这种限制。

Throttling in action

解决Chrome限制的一种方法是将多个请求合并为一个。

当我坐在这里思考“我想知道Firestore是否可以结合这些读取请求?”时,我注意到,巧合的是,对Firestore的请求实际上被命名为batchGet!但奇怪的是,每个batchGet请求只有一个读取内容:

It seems batchGet only gets one document

因此,为了避免Chrome的限制,我的问题是:如何在Firestore中同时请求多个文档?我怀疑这是可能的,因为有一个名为batchGet的服务器端点。有可能吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

只是挖了一下源,看起来这是不可能的。 Transaction的.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请求中获取多个文档。