寫小程序云函數的時候遇到了一個問題,如果只對數據庫操作一次的話,可以按照官方樣例放到return里面,但是如果需要對數據庫進行多次操作的話就不能這樣寫了,因為對數據庫的操作是異步執行的。
剛開始我也想了好長時間,最后才找到解決的辦法,就是用promise將異步操作同步化(后來才看到,官網也有)。
下面是我寫的一個簡單的注冊云函數
// 云函數入口文件const cloud = require('wx-server-sdk') cloud.init()const db = cloud.database()const _ = db.commandconst result={ code:'', body:''}// 云函數入口函數exports.main = (event, context) => { return new Promise((resolve, reject) => { db.collection('fan_user').where({ tel:_.eq(event.tel) }).get().then((res)=>{ if(res.data.length){ //用戶已注冊 result.code=400; result.body='該賬戶已注冊'; resolve(result) }else{ //用戶未注冊 db.collection('fan_user').add({ data:{ tel:event.tel, password:event.password } }).then((res)=>{ result.code=200; result.body=res; resolve(result) }) } }) }) }以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持錯新站長站。
新聞熱點
疑難解答
圖片精選