小程序云开发的问题(云函数在本地调试和云端表现不一致)解决方法

本文探讨了在小程序云开发中遇到的本地调试与云端执行结果不一致的问题,原因主要涉及异步操作。当使用异步查询云数据库并在返回结果中依赖此查询时,可能出现未等待查询完成就返回默认值的情况。解决方案是使用await关键字确保函数按同步方式执行,以匹配本地和云端的执行顺序。
摘要由CSDN通过智能技术生成

先说结论:这类问题大概率与异步执行有关。

问题表现:

本地调试结果符合预期,上传代码关闭本地执行后结果异常

问题定位:

在我的个案中,我是需要用到异步查询云数据库,并根据结果查询结果返回的,一开始我的代码如下

const cloud = require('wx-server-sdk')
cloud.init({
  // API 调用都保持和云函数当前所在环境一致
  env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database();


// 云函数入口函数
exports.main = async (event, context) => {
 var canMatch=false;
 const wxContext = cloud.getWXContext()
 db.collection('relation').where({
     shareid: event.shareid
   }).get().then(
     res=>{
       console.log('res is ',res)
      if(res.data.length==0){
         console.log('check point 2')               
         db.collection('relation').where({
           shareid: event.openid
         }).get().then(
           res => {
             if (res.data.length == 0) {
               console.log('check point 3')
              
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值