zttUnicloud
zttUnicloud
  • 发布:2023-03-23 16:41
  • 更新:2023-03-23 19:53
  • 阅读:241

【报Bug】连接本地云函数正常, 连接云端云函数就报错

分类:uniCloud

产品分类: uniCloud/App

示例代码:
console.log("=====================sendToNearByUsers start=====================", minDistance, maxDistance)  
    try {  
      const now = new Date().getTime();  
      const bookUsers = await this.db.collection('business_book_map').where({  
        monitoring_location: this.db.command.geoNear({  
          geometry: new this.db.Geo.Point(monitor.monitoring_location.coordinates[0], monitor  
            .monitoring_location.coordinates[1]),  
          maxDistance: maxDistance,  
          minDistance: minDistance,  
          unit: 'meters'  
        }),  
        monitoring_time: this.db.command.gt(now),  
        monitoring_distance: this.db.command.gte(maxDistance)  
      }).get();  

      console.log("[sendToNearByUsers] 查询用户结果", bookUsers, "距离", maxDistance)  
      const filteredUsers = bookUsers.data.filter(user => user.create_uid !== monitor.uid);  
      console.log("[sendToNearByUsers] 过滤结果", filteredUsers, monitor.uid)  

      const promises = filteredUsers.map(async (user) => {  
        const result = await this.db.collection('business_notice').add({  
          uid: user._id,  
          phone: user.phone,  
          business_type_name: businessType,  
          business_address: monitor.street,  
          create_time: new Date()  
        });  

        this.callPhone(user.phone, monitor.street, businessType)  
        let item = {  
          phone: user.phone,  
          uid: monitor.uid  
        }  
        this.noticeSend(businessType, monitor.street, item)  
        return result;  
      });  

      const results = await Promise.all(promises);  
      console.log('[sendToNearByUsers]电话通知结果', results);  
    } catch (err) {  
      console.error("发送给附近的人出现异常", err)  
    }  
    console.log("=====================sendToNearByUsers end=====================", minDistance, maxDistance)

操作步骤:

连接云端云函数预期结果, 触发执行

预期结果:

执行 : console.log("[sendToNearByUsers] 查询用户结果", bookUsers, "距离", maxDistance), 在云端日志打印出结果

实际结果:

仅仅打印了 =====================sendToNearByUsers start=====================
其他没有打印, 也没有报错

bug描述:

本地连接运行正常, 连接云端就无法执行. 也没有报错日志, 没有办法进行定位.

2023-03-23 16:41 负责人:无 分享
已邀请:
zttUnicloud

zttUnicloud (作者)

备注: 本地运行node环境:
Node.js v16.16.0
云端运行环境:
"cloudfunction-config": {
"runtime": "Nodejs12"
}

HB版本: 3.7.8.20230323

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

调用这个方法的时候没写await

  • zttUnicloud (作者)

    确实是因为 没有写await, 那么云函数和本地执行为什么不一致, 为什么云函数一定要加上await呢, 加上一直是不是异步变成了同步了呢? 是否有相关的链接对这一情况进行了说明?

    2023-03-24 12:48

  • DCloud_uniCloud_WYQ

    回复 zttUnicloud: 云函数在入口方法return之后会进行冻结,return之后逻辑不会执行。本地调试时没做这种限制

    2023-03-24 13:46

  • zttUnicloud (作者)

    回复 DCloud_uniCloud_WYQ: 奇葩设置, 这样所有代码就都是同步的了, 完全把异步的好处丢弃了, 设置一个超时时间不行吗?

    2023-03-27 12:45

  • DCloud_uniCloud_WYQ

    回复 zttUnicloud: 腾讯云nodejs12支持这种特性,其他环境可以通过调用其他云函数来执行异步逻辑

    2023-03-27 13:10

要回复问题请先登录注册