小程序云函数+触发器更新数据库失败(仅上传云函数后第一次调用时成功)
发布于 6 年前 作者 yang95 13093 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

在小程序云开发中:在云函数里使用触发器更新数据库里的数据,只有上传后第一次执行成功:

云函数 getYi 的日志:

返回结果:
 
{"stats":{"updated":1},"errMsg":"document.update:ok"}

后面自动执行的都显示:

云函数 getYi 的日志:

返回结果:
 
{"stats":{"updated":0},"errMsg":"document.update:ok"}

虽然显示云函数调用成功,但检查数据库发现__后面触发器自动执行后,__数据库里的数据没有得到更新

  • 预期表现

使用触发器云函数update数据库数据,数据每次应该得到更新。

  • 复现路径

云函数 getYi 的主要代码:

// config.json

其中触发器每10s执行一次。

// index.js

 

云数据库yiDB:有一个_ID是 yiDB-data 的数据,但是上传部署云函数 getYi 后,只有第一次执行时能更新 yiDB-data 数据,后面触发器每隔10s自动执行的都更新不了数据。

3 回复

怎么解决的啊,可不可以详细点

云函数实际在执行用户请求的时候,是起了一个容器,当短时间内频繁有用户请求的时候,容器会进行复用已加快响应速度。

因此,如果想要代码每次都会被执行,需要把代码逻辑写到main函数内部。复用容器的时候,初始化代码(main函数外)只会被首次执行

该问题已解决,要执行的内容必须都放在 exports.main 里面。

回到顶部