Firebase云功能数据库触发器有时无法正确运行

谭时间:

我写了下面运行良好的代码。但是最近我发现触发器有时不会更新内部值。我的代码有什么问题吗?我在下面附上了日志和代码。

日志:30秒后,请求0411193257728的内部标志未更新。

7:33:01.008 pm
publishRequest
call constructor
7:33:01.777 pm
publishRequest
process the request ref = 0411193257728
7:33:02.096 pm
publishRequest
Function execution took 30038 ms, finished with status: 'ok'
7:33:02.098 pm
publishRequest
request 0411193231315 updated !
7:33:31.786 pm
publishRequest
Function execution took 31465 ms, finished with status: 'ok'
7:36:30.592 pm
publishRequest
Function execution started
7:36:30.603 pm
publishRequest
process the request ref = 0411193630508
7:37:00.607 pm
publishRequest
Function execution took 30016 ms, finished with status: 'ok'
7:37:02.295 pm
publishRequest
request 0411193630508 updated !

exports.publishRequest= functions.database.ref("Request/{requestID}")
.onCreate( async (snap, context) =>{  
    console.log("process the request ref = " + context.params.requestID);
    await sleep(30000);   
    snap.ref.child("internal").set(false)
            .then((value) =>{ console.log("request " + context.params.requestID + " updated !")} )
            .catch((error) => console.error(error));
    return;
})    
道格·史蒂文森(Doug Stevenson):

set()是异步的并返回一个承诺。由于您使用的是async / await语法,因此应使用该语法来确保函数等待直到写入完成。如果您不希望兑现承诺,则Cloud Functions可能会终止并清理异步工作,然后再完成。

exports.publishRequest = functions.database.ref("Request/{requestID}")
.onCreate( async (snap, context) =>{  
    console.log("process the request ref = " + context.params.requestID);
    await sleep(30000);   
    try {
        await snap.ref.child("internal").set(false)
        console.log("request " + context.params.requestID + " updated !");
    }
    catch (error) {
        console.error(error);
    }
})    

实际上,您甚至不应该尝试捕获错误-如果写入由于某些原因而失败,则只需释放该函数错误即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

不使用数据库触发器就无法使用Firebase云功能更新Firebase数据库

具有实时数据库触发器的 Firebase 云功能:如何更新源节点?

如何在onCreate触发器上访问Firebase云功能数据库的值

比较Firebase数据库的云函数触发器onCreate(),onWrite(),onUpdate(),何时使用?

如何使用带有实时数据库/分析触发器的Firebase Cloud功能调度程序?

Firebase数据库触发器-在删除和更新时触发onCreate

从PubSub触发的云功能写入Firebase数据库

我如何在firebase android中查询像云函数中的数据库触发器

使用Firebase数据库触发器onUpdate

用于Firebase数据库的Cloud Functions触发器?

Firebase数据库触发器:onCreate,onUpdate,onDelete

OnUpdate Firebase数据库触发器

Firebase 云功能;无法访问 Firestore 数据库

Firebase 实时数据库 - 数据库触发器结构最佳实践

Firebase 数据库触发器 - 从快照中获取数据库对象

数据库多表触发器

SQL触发器数据库

模拟Firebase数据库触发器功能错误:尚不支持服务“ firebaseio.com”

Firebase数据库是否提供事件,触发器和存储过程等功能?

在触发器中使用通配符时无法部署云功能

Firebase数据库,云功能,规则

JBoss有时无法连接到数据库

如何使用Firebase Cloud函数http触发器从Firebase数据库获取数据

有时在Firebase函数的触发器中发生“错误:13内部:发生内部错误”

Firebase数据库onWrite的云功能触发两次

如何从数据库触发的云功能中访问Firebase存储?

在 Firebase 函数中为数据库触发器传递的数据是否计入传出带宽?

Firebase的Cloud Functions-从数据库触发器获取父数据

Swift Firebase 更新旧数据 - 实时数据库触发器