收藏
回答

errorCode":1,"errorMessage":"user code exception?

日志中:

报错结果如下:{"errorCode":1,"errorMessage":"user code exception caught","stackTrace":"TypeError: Cannot read property 'OPENID' of undefined\n at Runtime.exports.main [as handler] (/var/user/index.js:113:32)\n at processTicksAndRejections (internal/process/task_queues.js:97:5)","statusCode":430}

Request ID如下

Request ID: 2f92bef7-ee36-4a52-bc6f-1ac91beadc5d

拜托大佬们教教我一下

回答关注问题邀请回答
收藏

1 个回答

  • 江乌好困
    江乌好困
    2022-02-01
    // 云函数入口文件
    const cloud = require('wx-server-sdk')
    
    
    cloud.init()
    // 云函数入口函数
    exports.main = async (event, context) => {
      const wxContext = await cloud.getWXContext()
      console.log('成功获取用户信息')
      console.log(wxContext)
      // 检验用户的数据是否是正常获取 -start
      if(wxContext.OPENID == undefined){
        var result = {}
          result.errCode = 1
          result.errMsg = '未正常获取用户的信息,请重试!'
          var data = {}
          result.data = data
          return result
        }
      // 检验用户的数据是否是正常获取 -end
    
    
      // 校验参数是否是必传 -start
      if(event.avatarUrl == undefined){
        var result = {}  
        result.errCode = 2
        result.errMsg = '未传入必要参数,请重试!'
        var data = {}
        result.data = data
        return result
      }
    
    
      if(event.gender == undefined){
        var result = {}  
        result.errCode = 2
        result.errMsg = '未传入必要参数,请重试!'
        var data = {}
        result.data = data
        return result
      }
      // 校验参数是否是必传 -end
      const db = cloud.database()
      //根据用户的openid获取用户信息,如果没有正常获取则创建新的用户数据 -start
      var user;
      await db.collection('Users')
      .where({
        openid:wxContext.OPENID
      }).get()
      .then( res => {
        console.log('获取用户信息成功')
        console.log(res.data)
        user = res.data[0]
      })
      //根据用户的openid获取用户信息,如果没有正常获取则创建新的用户数据 -end
    
    
      // 没有获取到用户数据,创建新的用户数据 -start
      if(user == undefined){
        to_add_data = {
          //昵称
          nickName:  event.nickName,
          //头像
          avatarUrl:  event.avatarUrl,
          // 性别
          gender:  event.gender,
          //用户识别码
          openid:  wxContext.OPENID,
          //是否为管理员,默认为0
          is_admin:  0,
          //记录时间
          signTimenew Date(),
          //默认登录情况
          isLoginedtrue,
          //默认信息绑定情况
          isRegisteredfalse, 
        }
        console.log('新构造的用户数据')
        console.log(to_add_data)
        //新增结果
        var add_result = {}
        await db.collection('Users').add({
          data:to_add_data
        }).then(res =>{
          console.log('新增用户成功')
          console.log(res)
          //该用户的数据记录的标签
          add_result = res._id
        })
      }
      // 没有获取到用户数据,创建新的用户数据 -end
    
    
      // 如果获取到用户数据,更新数据库中的数据 -start
      else{
        await db.collection('Users')
        .where({
          openid:wxContext.OPENID
        })
        .update({
          data:{
            //昵称
            nickName: event.nickName,
            //头像
            avatarUrl: event.avatarUrl,
            //性别
            gender: event.gender
          }
        })
        .then(res=>{
          console.log('更新成功!')
          console.log(res)
        })
      }
      // 如果获取到用户数据,更新数据库中的数据 -end
      
      //查询用户的最新信息,返回给前端 -start
      await db.collection('Users')
      .where({
        openid:wxContext.OPENID
      })
      .field({
        nickNametrue,
        avatarUrltrue,
        gendertrue,
        signTimetrue,
        is_admintrue,
        isLoginedtrue,
        isRegisteredtrue,
      })
      .get().then(res =>{
        console.log('获取用户数据成功')
        console.log(res.data)
        uesr = res.data[0]
      })
      var result = {}
      if(add_result){
        result.errCode = 0
        result.errMsg ='新增用户成功'
      }else{
        result.errCode = 0
        result.errMsg = '该用户已经注册过,用户信息已经更新!'
      }
        var data = {}
        data.user = user
        result.data = data
        return result
      //查询用户的最新信息,返回给前端 -end
    }
    
    2022-02-01
    有用
    回复
登录 后发表内容