k***@163.com
k***@163.com
  • 发布:2023-02-27 14:48
  • 更新:2023-02-28 11:16
  • 阅读:229

触发器里面const db能不能写在module.exports前面?

分类:uniCloud

文档强调云函数不能够定义全局变量。
我看触发器的const db=uniCloud.database()是定义在afterUpdate里面,这样的话我是不是需要在每一个触发事件里面重新定义一次?
beforeRead/afterRead...?

2023-02-27 14:48 负责人:无 分享
已邀请:
DCloud_uniCloud_CRL

DCloud_uniCloud_CRL

不建议定义全局变量,如果云函数并发大于1的话就会存在多个请求访问同一个云函数,可能会造成上下文引用错乱。

  • k***@163.com (作者)

    谢谢回复。

    为什么我看到uni-starter里面自带的登录action是定义的全局变量呢?
    uni-clientDB-actions\signIn.js


    // 开发文档:https://uniapp.dcloud.io/uniCloud/clientdb?id=action  
    const db = uniCloud.database();
    const dbCmd = db.command
    const signInTable = db.collection('opendb-sign-in');
    const scoresTable = db.collection('uni-id-scores');
    module.exports = {
    before: async (state, event) => {
    // console.log({state});
    ……

    2023-03-02 08:59

  • DCloud_uniCloud_CRL

    回复 k***@163.com: 并发是1的情况下不会有问题的。

    2023-03-02 11:13

  • k***@163.com (作者)

    回复 DCloud_uniCloud_CRL:

    文档说多并发是需要手动设置,也就是说默认单并发,定义全局变量没问题?

    另外,设置了某个云函数的多并发之后,每一个全局变量都只在定义的云函数/action/触发器里面才生效?一个云函数/action/触发器的全局变量不会影响其他云函数/action/触发器里面的全局变量?

    2023-03-02 13:09

要回复问题请先登录注册