收藏
回答

云函数调用 ,官方文档获取大于100条,代码有bug吗?调用失败了

完全使用官方获取大于100条数据的代码

谁帮忙看看啥意思

const cloud = require('wx-server-sdk')


// 初始化 cloud

cloud.init({

  env: "lghcloud2-fnker",

  traceUser: true

})

const db = cloud.database({  env: "lghcloud2-fnker"})

const MAX_LIMIT = 100

 exports.main = async (event, context) => {

  var group=event.group

  var  admincompany=event.admincompany

    const countResult = await db.collection(group).where({ usercompany: admincompany, order:false }).count()

    const total = countResult.total

    console.log("total",total)

  // 计算需分几次取

     const batchTimes = Math.ceil(total / 100)

    // 承载所有读操作的 promise 的数组

    const tasks = []

    for (let i = 0; i < batchTimes; i++) {

      const promise = db.collection(group).where({ usercompany:admincompany, order:false }).skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()

     tasks.push(promise)

       console.log("TASK",tasks)

    }

    console.log("task",tasks)

   // 等待所有


  return (await Promise.all(tasks)).reduce((acc, cur, [, initialValue]) => {

    return {

      event,

      data: acc.data.concat(cur.data),

      errMsg: acc.errMsg,

    }

  })


}



//上面为失败代码






//以下为修改后的代码,亲测可用

exports.main = async (event, context) => {

  const group=event.group

  const  admincompany=event.admincompany

  let count =await getCount(admincompany,group);

  count = count.total;

  let data =[]

 

  for (let i = 0; i < count; i += 100{//自己设置每次获取数据的量

    data = data.concat(await getList(i,admincompany,group));

  }

  console.log("list",data)

  return data;

}

async function getCount(admincompany,group) {//获取数据的总数,这里记得设置集合的权限

  let count = await db.collection(group).where({usercompany:admincompany, order:false 

  }).count();

  return count;

}

async function getList(skip,admincompany,group) {//分段获取数据

  let list = await db.collection(group)

  .where({usercompany:admincompany, order:false 

  }).skip(skip).get();

 

  return list.data;

}


最后一次编辑于  2020-08-16
回答关注问题邀请回答
收藏

1 个回答

  • Mr.Zhao
    Mr.Zhao
    2020-08-16

    亮代码

    2020-08-16
    有用
    回复 5
    • Lgh_李国辉13150849294
      Lgh_李国辉13150849294
      2020-08-16
      附了代码,已经修复了,当但是还不知道原因,网上找的代码测试可行,下面的是正确的,上面的是失败的
      2020-08-16
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-08-16回复Lgh_李国辉13150849294
      不报错啊
      2020-08-16
      回复
    • Lgh_李国辉13150849294
      Lgh_李国辉13150849294
      2020-08-16回复Mr.Zhao
      是获取大于100条的情况下吗 ? 我一开始也不报错,后来突然就调用失败了,
      2020-08-16
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-08-16回复Lgh_李国辉13150849294
      这个去掉就不报错了
      2020-08-16
      回复
    • Lgh_李国辉13150849294
      Lgh_李国辉13150849294
      2020-08-16回复Mr.Zhao
      好,我试试,这是啥意思了,这个参数
      2020-08-16
      回复
登录 后发表内容
问题标签