我以前在學習安卓開發時曾經用到過Bmob后端云作為后端數據存儲于查詢,因此微信小程序出來之后我也想用它作為微信小程序的后端云,但可惜Bmob后端云并沒有支持微信小程序的SDK,前兩天我查到了LeanCloud支持微信小程序的sdk,以此寫下筆記。
資料引用:
https://leancloud.cn/docs/weapp.html
創建應用
- 如果你還沒有創建過 LeanCloud 應用,請登錄 LeanCloud 控制臺 創建一個新應用。
- 如果你還沒有小程序帳號,請訪問 微信公眾平臺 注冊一個小程序帳號。如果你不需要進行真機調試可以跳過這一步。
- 下載 小程序開發工具,按照 小程序開發教程 創建一個項目。
- 請按照 小程序域名白名單配置 的步驟配置。如果你不需要進行真機調試可以跳過這一步。
安裝與初始化SDK
- 下載av-weapp.js,移動到
libs
目錄。 - 在
app.js
中使用const AV = require('/libs/av-weapp.js');
獲得AV
的引用。在其他文件中使用時請將路徑替換成對應的相對路徑。 - 在
app.js
中初始化應用:
AV.init({
appId: '你自己應用的appId',
appKey: '你自己應用的appKey',
});
- 官方提供的demo:https://github.com/leancloud/leantodo-weapp。
總結:
在app.js中代碼:
// app.js
const AV = require('./libs/av-weapp.js');
var APP_ID = '你自己應用的appId';
var APP_KEY = '你自己應用的appKey';
AV.init({
appId: APP_ID,
appKey: APP_KEY,
});
App({})
在各個頁面中代碼:
// xxx.js
const AV = require('av-weapp.js的絕對路徑');
Page({
// 運用AV相關的api進行數據存儲與查詢操作
})
數據存儲
1. 對象存儲
由于內容太多,有興趣的朋友可以自行了解https://leancloud.cn/docs/leanstorage_guide-js.html
下面簡單介紹一下用法:
// xxx.js
Page({
// 生命一個Todo類型
var Todo = AV.Object.extend('Todo');//Todo即為數據表名稱(或類名)
// 新建一個Todo對象
var todo = new Todo();
// set方法:第一個參數為字段名,第二個參數為該字段的值
todo.set('title', '工程師周會');//title為字段名,工程師周會為該字段的值
todo.set('content', '每周工程師會議,周一下午2點');
// 只要添加這一行代碼,服務端就會自動添加這個字段
todo.set('location','會議室');
todo.save().then(function (todo) {
// 成功保存之后,執行其他邏輯.
console.log(res.objectId);
}, function (error) {
// 異常處理
});
})
2. 文件存儲
在小程序中,可以將用戶相冊或拍照得到的圖片上傳到 LeanCloud 服務器進行保存。首先通過 wx.chooseImage方法選擇或拍攝照片,得到本地臨時文件的路徑,然后按照下面的方法構造一個 AV.File將其上傳到 LeanCloud:
wx.chooseImage({
count: 9,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: function(res) {
var tempFilePath = res.tempFilePaths[0];
new AV.File('file-name', {
blob: {
uri: tempFilePath,
},
}).save().then(
file => console.log(file.url())
).catch(console.error);
}
});
上傳成功后可以通過file.url()
方法得到服務端的圖片url。
用戶系統
小程序中提供了登錄 API 來獲取微信的用戶登錄狀態,應用可以訪問到用戶的昵稱、性別等基本信息,但是如果想要保存額外的用戶信息,如用戶的手機號碼、收貨地址等,則需要使用 LeanCloud 的用戶系統。
一鍵登錄
LeanCloud 的用戶系統現已支持一鍵使用微信用戶身份登錄。要使用一鍵登錄功能,需要先設置小程序的 AppID 與 AppSecret:
登錄 微信公眾平臺,在 設置 > 開發設置 中獲得 AppID 與 AppSecret。
前往 LeanCloud 控制臺 > 組件 > 社交,保存「微信小程序」的 AppID 與 AppSecret。
現在,你可以在應用中使用 AV.User.loginWithWeapp()方法來使用當前用戶身份登錄了。
AV.User.loginWithWeapp().then(user => {
this.globalData.user = user.toJSON();
}).catch(console.error);
如果該用戶是第一次使用此應用,調用登錄 API 會創建一個新的用戶,你可以在 控制臺 > 存儲 中的 _User表中看到該用戶的信息,如果該用戶曾經使用該方式登錄過此應用,再次調用登錄 API 會返回同一個用戶。
用戶的登錄狀態會保存在客戶端中,可以使用 AV.User.current()方法來獲取當前登錄的用戶,下面的例子展示了如何同步登錄用戶的信息:
// 獲得當前登錄用戶
const user = AV.User.current();
// 調用小程序 API,得到用戶信息
wx.getUserInfo({
success: ({
userInfo}) => {
// 更新當前用戶的信息
user.set(userInfo).save().then(user => {
// 成功,此時可在控制臺中看到更新后的用戶信息
this.globalData.user = user.toJSON();
}).catch(console.error);
}
});
tip
- 受到微信小程序1M大小的限制,官方提供的av-weapp.js文件比較大(470kb),這是非常不可取的,希望官方或網友可以提供一個沒有注釋和空格的壓縮文件供大家使用。