小程序云開發(fā)坑
- 一個(gè)小程序賬號(hào)可以有多個(gè)云環(huán)境,通常我們頁只有一個(gè)。所以在小程序中或者云函數(shù)中的初始化代碼都沒有指定環(huán)境的ID。
App({
onLaunch: function() {
if (!wx.cloud) {
console.error('請使用 2.2.3 或以上的基礎(chǔ)庫以使用云能力')
} else {
wx.cloud.init({
env: "xxxx" // 小程序云環(huán)境id
traceUser: true
})
}
this.globalData = {}
}
})
- 在云函數(shù)中對(duì)云數(shù)據(jù)庫進(jìn)行CURD時(shí)候,一定要注意:
比如我們對(duì)一個(gè)collection進(jìn)行修改
db
.collection(collection)
.where({
_openid: wxContext.OPENID
})
.update({
data: form
})
如果你的代碼像上面那樣,那么這個(gè)db操作將不會(huì)被執(zhí)行,并且云函數(shù)的日志也不會(huì)進(jìn)行報(bào)錯(cuò)。你必須要把代碼改為
return await db
.collection(collection)
.where({
_openid: wxContext.OPENID
})
.update({
data: form
})
沒錯(cuò),你必須立即返回,并且添加await關(guān)鍵字,這個(gè)return會(huì)將db的update操作后的Promise的入?yún)⒆鳛樵坪瘮?shù)的返回值。
- 對(duì)于能不能進(jìn)行db的嵌套操作,比如“先根據(jù)openid查詢用戶記錄,然后進(jìn)行修改”,代碼如下:
return await db
.collection(collection)
.where({
_openid: wxContext.OPENID
})
.get()
.update({
data: form
})
這個(gè)操作能否執(zhí)行,沒有測試過。