收藏
回答

大神来帮我看看,云函数,循环新增数据时的操作,为何只循环1次就结束了?

经查询得知,小程序目前无法批量插入多条数据。

目前困扰我的问题,我写的代码,在循环插入的时候,循环1次后就结束了....

exports.main = async(event, context) => {
  try {
    let {
      taskname,
      userInfo
    } = event;
    //名称先查重,通过后再入库
    return taskCollection.where({
      "taskName": taskname
    }).count().then(res => {
      if (res.total == 0) {
        return taskCollection.add({
          data: {
            "_openid": userInfo.openId,
            "taskName": taskname,
            "creatTime": db.serverDate()
          }
        }).then(res => {
          //获取新建任务的taskid
          return taskCollection.field({
            _id: true
          }).where({
            taskName: taskname
          }).get().then(res => {
            let taskid = res.data[0]._id;
 
            //从stu表中,获取stuid,
            //然后将taskid、stuid、status、creattime记录到数据库中
            return stuinfoCollection.get().then(res => {
 
              //sutres为then的入参res,单独拿出来,用于循环下面的新增获取stu_id
              let stures = res;
 
              //stuCount为从stu表中获取到数据的个数
              let stuCount = stures.data.length;
               

              //循环将获取到的记录,一次次插入到另一张detail表中

             //这里循环1次后就结束了,不懂为啥????

              for (let i = 0; i < stuCount; i++) {
                return detailColletction.add({
                  data: {
                    "task_id": taskid,
                    "stu_id": stures.data[i]._id,
                    "status": 0,
                    "creatTime": null
                  }
                })
              }
            })
          })
          //保存成功的标志
          return "0";
        }).catch(res => {
          //保存失败的标志
          return res;
        })
      } else {
        //重名的标志
        return "1"
      }
    });
  } catch (e) {
    console.error(e)
  }
}

希望大佬们帮我这个新手,看下问题,顺便提下建议。

怎么感觉我写的很复杂呢。。。

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

1 个回答

  • 金煜峰
    金煜峰
    11-07
    你在for循环里用了return,执行1次函数都返回了还咋继续执行😂 另外建议用await,这么多then也太乱了
    11-07
    赞同 1
    回复 4
    • 黑壳花生
      黑壳花生
      11-07
      多谢大佬指点 我去学习下
      11-07
      回复
    • 黑壳花生
      黑壳花生
      11-07
      但是不return的话 一次都不执行额 哈哈哈哈
      11-07
      回复
    • 金煜峰
      金煜峰
      11-07回复黑壳花生
      用await,不然一次都没执行完就返回了
      11-07
      1
      回复
    • 黑壳花生
      黑壳花生
      11-07
      嗷嗷 懂了 感谢
      11-07
      回复
问题标签