我有一个云功能项目,我使用 Firestore 作为数据库。我有一个充当 RESTapi 的函数。我还有一个云函数触发器,它将在文档创建时运行。
场景
当 onCreate 触发器被调用时,我向第 3 方 API 发送请求。该 API 返回一个 ID,我将其设置回 Firestore 中最近创建的文档。
// Runs inside onCreate trigger "some-collection/{someId}"
const result = await fetchIdFromA3rdPartyAPI(query);
if (result) {
try {
await firestore()
.collection("some-collection")
.doc(docId)
.set({
someId: parseInt(result)
}, { merge: true });
} catch (err) {
// log to gcp Cloud Logging
console.log(err);
}
}
问题
如果在冷启动后调用此 onCreate,则最多需要 4 分钟才能使用
someId
字段更新文档。
如果我按如下方式拆分更新调用,
const doc = await firestore().collection("some-collection").doc(docId);
// console.log('reached here', doc);
await doc.set({...})
现在我可以看到控制台日志“到达这里”,这意味着需要 4 分钟才能解决
set()
调用(也尝试过 update()
)。
如果我在解决此问题后立即触发
onCreate
,它会立即生效。所以这似乎只发生在冷启动时。
所有功能均使用以下配置运行
timeouteSeconds: 540
memory: 4GB
maxInstance: 1
version: v1
也没有任何异常。我在日志上也看不到任何错误。
这可能是什么原因?
我也面临着同样的问题。祝你好运。