收藏
回答

云函数“取集合所有数据”案例中的最后一个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,
    }
  })
}

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/collection/Collection.get.html

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

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

1 个回答

  • 哄哄
    哄哄
    2020-09-07

    最后一个return是reduce函数的子函数,结果会直接返回给reduce

    2020-09-07
    有用
    回复
登录 后发表内容
问题标签