我有以下代码,当互联网速度较慢时,我无法捕获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);
}
});
}
答案 0 :(得分:0)
如果互联网连接速度缓慢或出现故障,Firestore不会引发错误。要么:
如果执行#2,您将在控制台日志中看到一条有关此的消息。但是进行查询的代码不仅会失败。仅针对无法恢复的错误(例如违反安全规则和超出限制)给出失败。
如果您希望代码在网络出现问题时失败,请考虑改用REST API。