我编写了最简单的Google云功能,可以读取Firestore集合中的多个文档。
async function loadCodes()
{
var errorCodes = [];
let errorsRef = firestore.collection(ERROR_CODES_COLLECTION_NAME)
.where("EntityNumber", "==", 7);
try {
await errorsRef.get()
.then(qs => {
qs.forEach(doc => {
errorCodes.push(doc.data());
});
});
return errorCodes;
}
catch (err) {
... 我在几分钟内多次调用了该函数。 在大多数情况下,执行时间约为预期的60毫秒。但是在10-15%的情况下,它需要1.5-2秒。
如何解释,是否有可能避免?
答案 0 :(得分:0)
我想问题是loadCodes()是全局函数。 从集合中获取文档实际上需要将近一秒钟,但是由于这是一个全局函数,Google会将其(及其结果)保存在缓存中。因此,在大多数情况下,实际上不会调用loadCodes(),整个云函数的执行时间很短。当Google决定刷新环境时,LoadCodes会真正执行其工作,并且需要时间。