收藏
回答

云函数中使用数据库请求获得数据后,如何使用循环对数据进行处理?

我希望在云函数中,对数据库进行请求调用,在拿到数据库回传的数据后,再对数据进行加工然后返还给用户。但是现在遇到了问题。

exports.main = async (event, context) => {
  let count=3;
  let time=new Date().toLocaleDateString();
  let Lawyer=await DB.collection("Lawyer").limit(count).where({
    verify:true
  }).get()
  let data=Lawyer.data;
  for(var i=0;i<data.length;i++)
  {
    data[i]={
      openId:data[i].openId,
      location:data[i].locate[0]+data[0].locate[1],
      name:data[i].name,
      year : Number(time.slice(6,time.length))-Number(data[i].certification_date.slice(0,4)),
      company:data[i].company,
      img:data[i].img,
      mode:data[i].mode,
      price:data[i].price,
      tags:data[i].tags,
    }
  }
  return {
    data
  }
}



报错点是在循环中,但是不知道怎么去更改。如果不用循环将循环变量i直接改为0则不会报错。但是实际处理中会是一整个数组需要进行数据处理,所以不知道该如何进行修改




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

2 个回答

  • ⅴ
    发表于小程序端
    2022-10-16

    第一次循环后,data[0]就没有locate属性了,被你改成了location,但是你还是使用了data[0].locate

    2022-10-16
    有用 1
    回复 1
    • 凌邪
      凌邪
      2022-10-16
      确实是这个原因,谢谢!
      2022-10-16
      回复
  • 凌邪
    凌邪
    2022-10-15

    如果不加循环可以正常使用过data[0],但是如果加上外部循环就会提示出现错误

     Cannot read property '0' of undefined

    // for(let i=0;i<count;i++)
    // {
      data[0] = {
        openId: Lawyer.data[0].openId,
        location: Lawyer.data[0].locate[0] + Lawyer.data[0].locate[1],
        name: Lawyer.data[0].name,
        year: Number(time.slice(6, time.length)) - Number(Lawyer.data[0].certification_date.slice(0, 4)),
        company: Lawyer.data[0].company,
        img: Lawyer.data[0].img,
        mode: Lawyer.data[0].mode,
        price: Lawyer.data[0].price,
        tags: Lawyer.data[0].tags,
      }
    // }
    


    2022-10-15
    有用
    回复
登录 后发表内容