微信小程序云函数调用本地调用返回值中result为undefined

这个问题真的搞人。。。

网上有说因为node.js版本原因导致callback和return冲突的,有说没写return的,有说没用async/await的,都试过了没用。。。

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  const db = cloud.database()
 await db.collection('user')
  .where({
    openid:wxContext.OPENID
  })
  .get()
  .then(res=>{
    console.log(res.data[0].left_info_times)
    return{
      times:res.data[0],
    }
  })

 

我之前的云函数是上面这样的,

 wx.cloud.callFunction({
      name:"get_left_remind_times",
      data:{},
    }).then(res=>{
      // that.setData({
      //  left_times: res.times,
      // })
      
      console.log(res)
    })

本地调用是上面这样的,结果打印出res结果如图

最后,在查询前加了个return后再调试

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  const db = cloud.database()
  return await db.collection('user')
  .where({
    openid:wxContext.OPENID
  })
  .get()
  .then(res=>{
    console.log(res.data[0].left_info_times)
    return{
      times:res.data[0],
    }
  })

终于拿到了数据。。。。启发点来自于看了我找问题时看到了一个问题:最后一个return中添加自定义对象,打印自定义对象时undefined。后来试了一下把最后一个return中的对象进行修改,发现不管其中设置了什么(包括啥都不写),最后打印出来的都是data和errMsg。所以最后一个return是不是没起作用?

官方例子
const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
const MAX_LIMIT = 100
exports.main = async (event, context) => {
  // 先取出集合记录总数
  const countResult = await db.collection('todos').count()
  const total = countResult.total
  // 计算需分几次取
  const batchTimes = Math.ceil(total / 100)
  // 承载所有读操作的 promise 的数组
  const tasks = []
  for (let i = 0; i < batchTimes; i++) {
    const promise = db.collection('todos').skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()
    tasks.push(promise)
  }
  // 等待所有
  return (await Promise.all(tasks)).reduce((acc, cur) => {
    return {
      data: acc.data.concat(cur.data),
      errMsg: acc.errMsg,
    }
  })
}

云开发技术产品经理的回答:

微信小程序云函数调用本地调用返回值中result为undefined_第1张图片

原帖链接:

https://developers.weixin.qq.com/community/develop/doc/000e2286654fd8b1b7daeb9735b000?_at=1558800099062

希望能帮到遇到同样遇到这个问题的朋友吧

 

 

 

你可能感兴趣的:(杂七杂八,小程序)