目錄
- 1 創建數據源
- 2 注冊用戶
- 3 判斷用戶是否注冊
- 4 完整代碼
- 總結
我們的培訓報名小程序,用戶每次打開時都需要填寫個人信息才可以報名,如果用戶多次報名課程,每次都需要填寫個人信息,比較麻煩。
本篇我們就優化一下功能,打開小程序的時候我們判斷用戶是否注冊,如果已注冊就直接提取個人信息,如果未注冊就引導用戶注冊。
1 創建數據源
先創建一個報名人員信息表
然后創建字段,我們的字段有姓名、性別、身份證、電話、工作單位,為了控制數據權限我們增加一個openid字段
2 注冊用戶
數據源建好了之后,我們新建一個用戶注冊的頁面
用戶注冊的話我們使用表單容器來開發,拖入表單容器,數據源選擇我們剛剛創建的數據源
這里要注意,openid需要綁定輸入值,綁定為用戶登錄信息里的openid
然后切換到樣式,影藏組件
選中表單容器,我們在提交成功之后增加一個返回上一頁的事件
3 判斷用戶是否注冊
如何判斷用戶是否注冊呢?這需要在生命周期函數中做判斷,打開應用編輯器,在右下角點擊代碼編輯器
首先呢我們需要獲取一下用戶的openid,可以從當前的登錄對象里獲取,先輸入如下代碼獲取用戶的登錄信息
var openid ;//存儲登錄用戶的id//獲取當前登錄用戶基本信息await $app.auth.getUserInfo().then(res =>{ openid = res.openId});
獲取到信息之后,按照這個登錄信息去用戶表匹配去
const user = await app.cloud.callModel({name:'bmry_v3qpbaf',methodName:'wedaGetItem',params:{where:[{key:'openid',rel:'eq',val:openid}]}})
然后根據用戶信息是否獲取到來做路由跳轉
if(JSON.stringify(user) === "{}"){app.navigateTo({pageId: 'u_yong_hu_zhu_ce', // 頁面 Id });}else{$app.dataset.state.user = user}
4 完整代碼
export default {async onPageLoad(query) {//console.log('---------> LifeCycle onPageLoad', query)var openid ;//存儲登錄用戶的id//獲取當前登錄用戶基本信息await $app.auth.getUserInfo().then(res =>{ openid = res.openId});console.log("openid",openid)const user = await app.cloud.callModel({name:'bmry_v3qpbaf',methodName:'wedaGetItem',params:{where:[{key:'openid',rel:'eq',val:openid}]}})if(JSON.stringify(user) === "{}"){app.navigateTo({pageId: 'u_yong_hu_zhu_ce', // 頁面 Id });}else{$app.dataset.state.user = user}},onPageShow() {//console.log('---------> LifeCycle onPageShow')},onPageReady() {//console.log('---------> LifeCycle onPageReady')},onPageHide() {//console.log('---------> LifeCycle onPageHide')},onPageUnload() {//console.log('---------> LifeCycle onPageUnload')},
}
總結
我們本篇介紹了用戶注冊以及在首頁判斷用戶是否注冊來自動跳轉的內容,在開發業務邏輯的時候,需要熟練掌握javascript以及微搭API的用法才可以按照自己的需要實現具體的功能,感興趣的同學照著教程練習一下吧。