收藏
回答

《已无法正常开发》云函数本地能调用,发布到云上调用会报错,麻烦微信官方大神帮忙解决下

问题模块 框架类型 问题类型 终端类型 AppID 基础库版本
云开发 小程序 Bug 微信iOS客户端 wxd5f2243c8b1803ac 2.9.4

一、云端调用,Request ID: c382185f-157a-11ea-8bd4-525400a88e2e



二、本地调试


最后一次编辑于  12-03
回答关注问题邀请回答
收藏

2 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    12-05

    建议env写死或传进去

    12-05
    赞同
    回复 1
    • Jerry
      Jerry
      12-05
      好的,我试试,谢谢
      12-05
      回复
  • 子杰
    子杰
    12-03

    方便把云函数代码贴出来看看吗?

    12-03
    赞同
    回复 1
    • Jerry
      Jerry
      12-04
      // 云函数入口文件
      const cloud = require('wx-server-sdk')
      cloud.init({
        env: cloud.DYNAMIC_CURRENT_ENV
      })
      const db = cloud.database()


      // 云函数入口函数
      exports.main = async (event, context) => {
        const wxContext = cloud.getWXContext()
        console.log('event: ', event);


        let payload = { ...event.payload };


        // 计算拼车人数
        const totalBindingNumber = payload.users.map(item => item.bindingNumber).reduce((a, b) => a + b);
        console.log('totalBindingNumber: ', totalBindingNumber);


        // 获取"在该起点、入队最早、状态为已上线"的车辆队列列表
        const carsRes = await cloud.callFunction({
          // 要调用的云函数名称
          name: 'getCarLines',
          // 传递给云函数的参数
          data: {
            payload: {
              carPosition: payload.startPlaceId, // 在该起点
            },
            carPayload: {
              'carList.carStatus': 'c90b5d3d-617f-4685-808d-a77af0b2a37f', // 状态为已上线
            }
          }
        });
        const onlineCarLines = carsRes.result.list;
        console.log('onlineCarLines: ', onlineCarLines);


        // 有上线车辆,并且 拼车人数大于该车辆的出发人数
        // if (onlineCarLines.length > 0 && totalBindingNumber >= onlineCarLines[0].carList[0].carStartNumber) {
        if (onlineCarLines.length > 0) {
          const target = onlineCarLines.find(item => totalBindingNumber >= item.carList[0].carStartNumber);
          if (target) {
            payload['carId'] = target.carId;


            // 1、新增队列日志:上线 -> 使用中
            await cloud.callFunction({
              // 要调用的云函数名称
              name: 'addCarLinesLogs',
              // 传递给云函数的参数
              data: {
                payload: {
                  carId: target.carId,
                  operationType: 'using', // 使用
                  operationTime: new Date(),
                  carPosition: target.carPosition
                }
              }
            })


            // 2、车辆状态改为使用中
            await cloud.callFunction({
              // 要调用的云函数名称
              name: 'updateCars',
              // 传递给云函数的参数
              data: {
                payload: {
                  _id: target.carId
                },
                data: {
                  carStatus: '278ad4fc-acff-45c7-b953-df6de1d2c0da',
                },
              }
            })


            // 3、若人满,则订单状态显示"已满员"
            if (totalBindingNumber === target.carList[0].carSeatNumber) {
              payload = { ...payload, orderStatusId: '99d6da64-1571-4838-a918-941071dc1c8f' }
            }
          }
        }


        console.log('payload: ', payload);


        const addCarpoolRes = await db.collection('carpools').add({
          // data 字段表示需新增的 JSON 数据
          data: payload
        })
        console.log('addCarpoolRes: ', addCarpoolRes);
        return addCarpoolRes
      }
      12-04
      回复
问题标签