更新:后来再去搜索其他的贴子,发现他们并没有使用then语句,试着删掉在执行,已经可以返回了,道行太浅,原因不解:
// 云函数入口函数
exports.main = async (event, context) => {
return await db.collection('items').get()
}
------------------------------------------------------
社区很多这样的问题,不过因为刚学,很多代码看不懂,有劳啦~
其中有一位朋友的回答说是可以这样写,但我试过返回的还是null :
在日志里是可以看到数据的:
最后要赞一下微信的文档,真的很棒(手动狗头)
// 云函数入口函数 exports.main = async (event, context) => { const wxContext = cloud.getWXContext() const db = cloud.database() const _ = db.command const $ = db.command.aggregate /** * customers表和record表作连接 * @see https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions/async.html * 需要异步返回数据,否则返回的数据为null */ console.log('调用云函数查询设备信息(ID列表):' + event.deviceId) return new Promise((resolve , reject) => { db.collection('customers') .aggregate() .match({ _id:_.in(event.deviceId) }) .lookup({ from:'record', let:{ customersId:'$_id' }, pipeline:$.pipeline() .match(_.expr($.eq(['$uid','$$customersId']))) .sort({ record_time:-1 }) .limit(12) .done(), as: 'recordList' }) .end() .then(res => { console.log("返回结果列表:") console.log(res.list) // 通过resolve()返回结果 resolve(res) }) .catch(err => reject(err)) }) } //调用端 wx.cloud.callFunction({ name:'getDeviceInfo', data:{ 'deviceId':deviceId }, success:function(res){ wx.showToast({ title: '更新成功', icon:'success', }) console.log(res) }, faile:function(res){ } })
@see https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions/async.html