云数据库 db.collection(集合).where({}).get, 集合不能用变量吗?
发布于 5 年前 作者 hdai 7172 次浏览 来自 官方Issues

问题一。代码如下,adcode 换成集合名称就可以用,使用前端传过来的adcode变量就不行

问题二。这样取数据貌似效率比较低,如何能提高获取数据的效率,根据集合的多个id 请求多条数据,请求大神解答一下

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

  let adcode=event.adcode

  for(var j=0, len=event.cartlist.length; j < len;j++){

          try{

    await  db.collection(adcode).where({

      _id:event.cartlist[j].goods_id

 

    }).get().then(res=>{

      cartlistdetail.push(res.data[0])

    }).catch(err=>{})

 

  }catch(err){

    console.log(err)

  }

  }

  return  cartlistdetail

}

3 回复
exports.main = async (event, context) => {
  let adcode = event.adcode, ids = []
   if(!event.adcode || event.adcode.trim() == '') return { errMsg: '集合名未传'}
  for(var j=0, len=event.cartlist.length; j < len;j++){
    ids.push(event.cartlist[j].goods_id)
  }
   return ids.length ? db.collection(adcode).where({_id: _.in(ids)}).get() : []
}

若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人

使用前端传过来的adcode变量就不行,这里怎么不行,可以给一个报错嘛

你这些代码都是可以放在小程序端运行的,没必要用云函数。

回到顶部