云开发for循环中查询数据库异步执行的问题怎么解决
- 需求的场景描述(希望解决的问题)
// 云函数入口文件 const cloud = require( 'wx-server-sdk' ) cloud.init() const db = cloud.database(); const db_goods = db.collection( 'goods' ) // 云函数入口函数 exports.main = async(event, context) => { let cartList = event.cartList for (let i = 0; i < cartList.length; i++) { cartList[i].goods = db_goods.where({_id:cartList[i].goods_id}).get() } return cartList } |
- 希望提供的能力
有没有什么解决办法??
3 回复
因为云开发内存最大提供256M,运行时间长就会报超时,可以修改超时时间,最大值是20秒。如果超过20秒你的云函数还不能运行完毕就会报错。
建议做法:第1步、新建一个数据库集合,把这个集合作为累加器。第2步、在你的代码中where的取值范围为你集合累加器的取值范围,代码最后还要增值累加器数据。第3步、使用定时触发器触发你的代码。
如果cardList不是特别大的话,可以用在使用逻辑查询https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-client-api/database/command.or.html如果cardList很大,在查询语句前加个await试试