收藏
回答

50元奖励,关于多次调用云开发统计API的问题,急急急,谢谢各位

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 客户端 cqksxzs-4pef4 2.6.6

- 当前 Bug 的表现(可附上截图)


- 预期表现


- 复现路径


- 提供一个最简复现 Demo



问题描述:从一个云开发集合中多次调用统计API,因为是异步返回结果,每次返回的都不一样.

需要:因为是分类统计,需要知道返回的结果,是什么条件(由'ID0'+i控制)下产生的结果





最后一次编辑于  2019-07-04
回答关注问题邀请回答
收藏

4 个回答

  • Justan
    Justan
    2019-07-05

    两个问题

    1. 既然用正则来匹配, 感觉可以只用查询一次, 然后再来找映射关系

    2. 按现有的多次查询, 你的写法算是个经典的异步问题, 可以试下其他回答的建议, 把 `i` 作为参数传递

    2019-07-05
    有用
    回复 1
    • 小波波
      小波波
      2019-07-12
      我是分类统计,用什么方法只查询一次啊?可以加个微信吗
      2019-07-12
      回复
  • 烧饼
    烧饼
    2019-07-05
    //生成查询Promise数组
    Promise.all(this.data.courses.map(function(item, i){
      return db.collection("questions").where({
        chapterID: db.RegExp({
          regexp: "ID0" + i
        })
      }).count();
    }))
    .then(function(resultList){
      console.log(resultList);   //按查询的数组顺序输出
    })


    这个意思?


    你现在是由courses里的结果来查询的,查询时这里面的数据是确定了的。所以问题只是你for循环里的异步回调的接收和整理的问题。


    你查询的每次都不一样是因为var声明时把i提升到了外部,而你查询都是异步的,故查询的条件可以执行,但then接收时都是一个值。这里可以用Promise.all()来按照下标来匹配courses读取

    2019-07-05
    有用
    回复
  • 低调de小兔
    低调de小兔
    2019-07-05

    写成递归函数,在异步回调中循环

    2019-07-05
    有用
    回复 2
    • 小波波
      小波波
      2019-07-05

      不知道怎么写,啊啊...郁闷死我了

      2019-07-05
      回复
    • 小波波
      小波波
      2019-07-12
      目前写得递归了,但感觉效率很低
      2019-07-12
      回复
  • 小波波
    小波波
    2019-07-04

    兄弟们,急啊,在线等...

    2019-07-04
    有用
    回复 3
    • 小波波
      小波波
      2019-07-05

      有人吗?

      2019-07-05
      回复
    • 刘科丰🐳
      刘科丰🐳
      2019-07-05

      最简单的方法,把 i 作为参数,再把 i 返回

      2019-07-05
      回复
    • 小波波
      小波波
      2019-07-12
      这个i不能作为参数传入后台并返回吧
      2019-07-12
      回复
登录 后发表内容