小程序云开发坑
- 一个小程序账号可以有多个云环境,通常我们页只有一个。所以在小程序中或者云函数中的初始化代码都没有指定环境的ID。
App({
onLaunch: function() {
if (!wx.cloud) {
console.error('请使用 2.2.3 或以上的基础库以使用云能力')
} else {
wx.cloud.init({
env: "xxxx" // 小程序云环境id
traceUser: true
})
}
this.globalData = {}
}
})
- 在云函数中对云数据库进行CURD时候,一定要注意:
比如我们对一个collection
进行修改
db
.collection(collection)
.where({
_openid: wxContext.OPENID
})
.update({
data: form
})
如果你的代码像上面那样,那么这个db操作将不会被执行,并且云函数的日志也不会进行报错。你必须要把代码改为
return await db
.collection(collection)
.where({
_openid: wxContext.OPENID
})
.update({
data: form
})
没错,你必须立即返回,并且添加await
关键字,这个return
会将db的update
操作后的Promise的入参作为云函数的返回值。
- 对于能不能进行db的嵌套操作,比如“先根据openid查询用户记录,然后进行修改”,代码如下:
return await db
.collection(collection)
.where({
_openid: wxContext.OPENID
})
.get()
.update({
data: form
})
这个操作能否执行,没有测试过。