大佬们,怎么样才能在云函数里面实现两个异步的操作
简单的说,我首先从数据库中取到数据,然后筛选出数据,找到符合条件的数据后,逐个更新
云函数的代码如下
// 云函数入口文件const cloud = require('wx-server-sdk')cloud.init()// 云函数入口函数exports.main = async(event, context) => { const db = cloud.database() const commend = db.command try { const seats_list = await db.collection('seats').where({ used: true }) .get() for (var seats_index in seats_list) { await db.collection('seats').doc(seats_list[seats_index].data._id).update({ data: { used: commend.set(false), } }) } } catch (e) { console.log(e) } return} |
大概意思就是从集合seat里面查找used为true的部分,await等到取完后,逐个更新并await所有的used变为false
但是上述代码并不能用,求大佬告诉我await的真正用法
(PS:不要问我为啥不直接where().update(),因为我原先的操作是要从数据库中所有used=true的内容中取出一个日期,然后跟本地的日期进行比较,最后更新,这个操作不能直接用where)

代码并不能用的出错信息呢?
建议你在业务层 做这个操作, 保证 每个云函数的功能 独立性
// 云函数入口文件const cloud = require('wx-server-sdk')cloud.init()const db = cloud.database();const commend = db.command;// 云函数入口函数exports.main = async(event, context) => {if (event.searchList) {try {return await db.collection('seats').where({used:true}).get(success: (res) => {return res});} catch (e) {console.error('========searchList error=======', e);}} else if (event.updateWithIds) {try {return await db.collection('seats')..where({id: _.in(event.ids) // 从业务层将要更新的 数据 ID 或者唯一标识字段以数组的方式传过来}).update({data: {used: commend.set(false),}})} catch (e) {console.error('========updateWithIds error=======', e);}}}------------------业务层面-------------------searchList: function() {wx.cloud.callFunction({name: '你这个函数对外暴露的名称',data: {searchList: true,},success: res => {},fail: err => {}})}update: function(ids) {wx.cloud.callFunction({name: '你这个函数对外暴露的名称',data: {updateWithIds: true,ids: ids || []},success: res => {},fail: err => {}})}