我使用
cloud function
和 firestore
来构建 REST api。它曾经按预期工作。但它从昨天开始就表现得很奇怪:所有函数执行了 1 分钟,并出现“超时”错误。奇怪的是我没有对函数的源代码做任何更改。
我开始调试,发现每次与 firestore 的交互都卡住了很长时间。我部署了一个新功能来测试。
代码如下:
const admin = require('firebase-admin');
admin.initializeApp();
const db = admin.firestore();
exports.test = functions.region("asia-east1").https.onRequest(async (req, res) => {
try {
console.log('function started---');
const getFloors = await db.collection('floors').get();
if (getFloors.empty) return res.send([]);
console.log('check getFloors---');
console.log(getFloors.docs.map(floor => floor.data()));
return res.send(getFloors.docs.map(floor => floor.data()));
}
catch (err) {
console.log(err);
return res.status(500).send(`error :${err}`);
}
})
这只是一个带有 firestore 的简单
get()
。为了确保我的代码中没有错误的逻辑,我用 try{}catch{}
包装它。这是我调用此函数后的日志:
如你所见,我在12:36:06调用了这个函数,然后它在
12:36:09写了
function started---
。然后函数在 1 分钟后于 12:37:06 以“错误”结束。最后,firestore get()
于 12:38:37 作出回应。 await db...get()
需要 2.5 分钟。
我不知道为什么仅仅一个简单的获取就需要这么长时间。有人可以给我一些建议吗?谢谢!