方法未捕获Firestore超时错误

时间:2020-07-04 13:37:26

标签: javascript google-cloud-firestore

我有以下代码,当互联网速度较慢时,我无法捕获Firestore超时错误。它只是返回空数组。

static getEspeciallyProducts() {
    return new Promise(async (resolve, reject) => {
        try {
            const db = Firebase.firestore(),
                products = [],
                activeRef = await db.collection("products")
                    .orderBy("id")
                    .withConverter(ProductConverter)
                    .get();
            for (let doc of activeRef.docs) {
                const data = doc.data();
                if (_.isObject(data))
                    products.push(data);
            }
            resolve(products);
        } catch (error) {
            reject(error);
        }
    });
}

但是,我的另一种方法遇到错误:

static getProductById(id) {
    return new Promise(async (resolve, reject) => {
        try {
            const docRef = Firebase.firestore().collection("products").doc(id),
                doc = await docRef.withConverter(ProductConverter).get();
            if (doc.exists)
                resolve(doc.data());
            else
                resolve(null);
        } catch (error) {
            reject(error);
        }            
    });
}

1 个答案:

答案 0 :(得分:0)

如果互联网连接速度缓慢或出现故障,Firestore不会引发错误。要么:

  1. 悄悄地重试直到连接可用,或者
  2. 放弃并退回到本地持久层。

如果执行#2,您将在控制台日志中看到一条有关此的消息。但是进行查询的代码不仅会失败。仅针对无法恢复的错误(例如违反安全规则和超出限制)给出失败。

如果您希望代码在网络出现问题时失败,请考虑改用REST API