因为本地只能删除一条,所以用云函数来执行删除多条记录,找了一天的bug,重点是 云函数编译器没有提示错误,只能通过返回内容查看,记录一下:
本地调用云函数的js:
wx.cloud.callFunction({
name: 'lockRemove', // 云函数名称
data: {
orderCode : this.data.orderCode
},success: function(res){
console.log(res); // 返回的是 调用云函数这个过程的结果,不是云函数执行的结果
},fail: function(res){
console.log(res);
}
})
云函数:
这个地方自己踩了很多坑:
- 首先 cloud.init :公司有两个云环境,app.js中定义了一个env,我以为不需要再定义了,但是一直如果init内不加env,会报“Error: errCode: -502005 database collection not exists”异常。
- 之前查文档,很多人是表名写错导致这个异常,collection(‘collectionName’)
- 跟第二个一样,注意单词拼写,有一些比如collection的单词拼写错,云函数没有错误提示(这个很狗血),所以一定好好检查自己的代码。
- 定义cloud、init、datebase一个都不能少。
- 右键自己云函数文件夹看看自己的云环境和定义的是否一样,如果调用云函数,没有返回结果,得去自己的云开发–云函数列表里查看是否有自己上传的云函数,如果没有,可能环境错了,记得更正。
// 使用了 async await 语法
const cloud = require('wx-server-sdk')
cloud.init({
env: 'br-20210607-0gcoovhi30xxxxx' // 这个地方放自己的云函数环境
})
const db = cloud.database()
const _ = db.command
exports.main = async (event, context) => {
let {
orderCode
} = event;
console.log(orderCode); // console的结果在 云开发--云函数--日志中查看
try {
return await db.collection('lock').where({
orderCode: orderCode
}).remove() // 返回调用结果
} catch(e) {
console.error(e)
}
}
调用成功的话 返回数据 如图:
找了一天的bug,心态炸裂,如果有同样问题的小伙伴,有别的异常解决的,也可以留言帮助下更多的小可爱~