微信小程序開發入門之共享賬本(六)

微信小程序開發入門之共享賬本(六)

接著上一篇

微信小程序開發入門之共享賬本(六)

上次說了登錄,是時候把各種數據往數據庫裡寫,記住這些用戶信息了

微信小程序開發入門之共享賬本(六)

打開IDE(集成開發環境縮寫),打開雲開發界面,選擇數據庫,點擊新建集合collection(對應於關係型數據庫中的表table)

微信小程序開發入門之共享賬本(六)

輸入集合名稱,點擊確定完成

微信小程序開發入門之共享賬本(六)

NOSQL數據庫不用預先定義有哪些字段field(對應關係型數據庫的列colum),但是我們還是要計劃好這個集合有哪些字段,下面是一個簡單的設計

微信小程序開發入門之共享賬本(六)

其中_id是自動生成的,是記錄的唯一id,其餘是自行設定的字段

定義好集合的字段後,可以先在雲開發環境中測試一下,雲開發環境提供了一個很好的測試工具,在數據庫頁面下面的[高級操作]裡

微信小程序開發入門之共享賬本(六)

點開[未命名模板],將裡面的內容刪除,輸入下面代碼進行測試

db.collection('user').add({
 data:{
 name:'花錢',
 avatarUrl:'',
 activeAcctBookId:'',
 joinTime:new Date(),
 acctBooks:[]
 }
})

代碼很容易理解,db代表數據庫,等同於cloud.database(),是雲開發測試環境為了測試方便默認提供的,我們在代碼裡寫的時候還是要自己手動獲取一下

db..collection('')是定位需要操作的集合,這裡輸入剛剛新建的user集合。

後面接著就是對這個集合的各種操作,add/delete/update/get分別對應增刪改查操作,更詳細的介紹可以看官方文檔,現在不看也行,後面需要了當資料去查就行

add操作需要傳入一個對象,對象必須包括要增加的數據,選填成功/失敗/完成情況下的回調函數,這裡我們只填數據data就行

點擊下面的[執行]按鈕,會彈出一個提示

微信小程序開發入門之共享賬本(六)

這表示你的數據操作腳本沒有錯誤,點擊確定後會在右邊顯示執行結果

微信小程序開發入門之共享賬本(六)

返回的是新增記錄默認生成的_id

回到user集合,可以看到已經新增了一條數據,內容就是腳本里的內容,_id就是執行結果顯示的字符串

微信小程序開發入門之共享賬本(六)

剛剛寫的腳本可以選擇存起來,以便以後複用,點擊[執行]旁邊的[保存]按鈕即可將腳本保存,單擊腳本名稱可以重命名腳本,最好用一個容易分辨的名字

微信小程序開發入門之共享賬本(六)

雲開發環境的操作就到這裡了,再回到IDE主界面

這裡說一下雲開發方式,雲開發不是不需要後臺環境,而是騰訊給你提供了一個現成的環境,以前需要自己配的運行環境和數據庫現在都準備的好好的,剩下的只需要你提供自定義的操作函數就行,這個操作函數就叫做[雲函數]

微信小程序開發入門之共享賬本(六)

雲函數的默認文件夾是cloudfunction,在之前一直用的miniprogram上面

微信小程序開發入門之共享賬本(六)

在上面右鍵,選擇新建雲函數

微信小程序開發入門之共享賬本(六)

你把之前的更改提交了嗎?一定要養成提交的習慣,等代碼多起來了會感覺到幫助很大

提交完了就還是右鍵,新建雲函數

微信小程序開發入門之共享賬本(六)

輸入雲函數名稱,這裡是登錄用,可以用login

新建的雲函數默認會上傳到雲開發環境,我這邊顯示上傳失敗了,提示有同名函數,不知道是什麼時候加的,先刪了再說

打開雲開發,選擇[雲函數],可以看到確實有一個叫login的函數

微信小程序開發入門之共享賬本(六)

點擊[刪除]可以刪除已有的雲函數

再回到IDE中,在login文件夾上右鍵,選擇上傳並部署:雲端安裝…即可完成雲函數在雲端的部署

然後再打開雲開發,選擇[雲函數],可以看到又有一個叫login的函數

微信小程序開發入門之共享賬本(六)

打開login函數的index.js文件,內容更改如下

const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
// 雲函數入口函數
exports.main = async (event, context) => {
 let user = event.user
 user.openId = event.userInfo.openId
 let p = await db.collection('user').add({
 data: user
 })
 if(p._id && p._id != ''){
 return Promise.resolve()
 } else {
 return Promise.reject('插入數據失敗')
 }
}

event參數是小程序調用時傳入的參數,它本身自帶一個字段userInfo,其中包含用戶的openId和小程序的appId,這裡我們會用到openId;user是我們在程序中上傳的用戶信息

取出新用戶信息和openId後,調用數據庫的add操作進行添加數據,數據庫操作本身是異步的,加上await關鍵字後可以用同步的方式來處理其返回結果。

如果添加數據成功則返回結果p中包含新數據的_id字段的值,所以可以據此判斷是否新增數據成功,給前臺相應的響應。

新增用戶的操作應該放在用戶第一次授權的地方進行處理,所以我們修改welcome的go函數來處理新增用戶信息的操作,代碼更改如下

go:function(e){
 if(e.detail.userInfo){
 let info = e.detail.userInfo
 let p = wx.cloud.callFunction({
 name:'login',
 data:{
 user:{
 name: info.nickName,
 avatarUrl:info.avatarUrl,
 joinTime:new Date(),
 activeAcctBookId:'',
 acctBooks:[]
 }
 }
 })
 p.then(res => {
 wx.navigateTo({
 url: '../index/index'
 })
 }).catch(err => {
 console.error(err)
 wx.showToast({
 title: '新建用戶失敗',
 icon:'fail'
 })
})
}
}

其中通過wx.cloud.callFunction的方式來調用雲函數,參數name標明雲函數的名稱,data表示要上送的數據,這裡我們送的是新用戶的信息,因為雲函數會返回一個Promise對象,所以這裡要用then和catch來分別處理成功(Promise.resolve)和失敗(Promise.reject)的情況,如果在雲函數中返回的是一個值,則只需要在then中對值進行判斷來處理

運行之前先要清除一下已經授權的信息,在IDE上方一排菜單中,最後有一個清緩存的下拉框

微信小程序開發入門之共享賬本(六)

點擊選擇[清除授權數據]即可清除

運行程序,點擊登錄,界面上還是一樣沒什麼變化

我們打開雲開發界面,切到數據庫,看看user集合裡是不是新增了一條新的數據

微信小程序開發入門之共享賬本(六)

好了,今日份開發到此完成

微信小程序開發入門之共享賬本(六)


分享到:


相關文章: