開發(fā)小程序離不開后臺數(shù)據(jù),對于獨立開發(fā)者來說,既要寫前端,又要寫后端,工作量就會驟然增大。微信提供的云開發(fā)無疑是給獨立開發(fā)者提供了很大的便利,但是由于其數(shù)據(jù)庫不支持聯(lián)表查詢,對于某些場景就不是那么的友好了。當(dāng)然,市面上有很多的 BaaS 服務(wù)提供商,大都類似,今天我們就用其中的一個 LeanCloud 來講解一下,如何快速使用 LeanCloud 來開發(fā)一個小程序。 由于本次重點在 LeanCloud ,所以小程序的開發(fā)內(nèi)容就不是重點。
現(xiàn)在開始
賬號注冊
先去leancloud.cn官網(wǎng)注冊一個賬號,然后登錄去控制臺創(chuàng)建一個新應(yīng)用。
域名配置
在微信小程序后臺中配置域名白名單,具體需要按照這里說明的來配置,你也可以先跳過這一步,等完全開發(fā)完畢后再來配置??稍陂_發(fā)者工具的 詳情 > 項目設(shè)置 中勾選 不校驗安全域名、TLS 版本以及 HTTPS 證書 。
SDK 集成
下載你熟悉的SDK,目前支持 JS , WePY , mpvue ,下載鏈接在這里,后面以 JS 來說明,其他方式的 SDK 導(dǎo)入以及使用方法參考文檔中的說明。
初始化 SDK
在 app.js 中加入以下代碼即可。 appId 和 appKey 可以在控制臺中的應(yīng)用找到。
const AV = require('./utils/av-live-query-weapp-min');
AV.init({
appId: '換成你自己的appId',
appKey: '換成你自己的appKey',
});
復(fù)制代碼
查詢數(shù)據(jù)
先需要在控制臺中的應(yīng)用下新建一個表,在網(wǎng)頁中叫做 Class 。每一張表會默認(rèn)創(chuàng)建 objectId 、 createdAt 、 updatedAt 、 ACL 四個字段,分別表示 數(shù)據(jù)索引 , 創(chuàng)建時間 , 更新時間、 權(quán)限 。你可以添加你想要的字段,目前支持以下幾種類型。
其中 Object 是 map 對象, GeoPoint 是經(jīng)緯度信息, Pointer 是另外一張表的表名,做多表聯(lián)合查詢使用的。 假設(shè)我們的表名是 T_TODO ,我們可以用以下代碼來查詢該表下面的數(shù)據(jù)。
new AV.Query('T_TODO')
.descending('createdAt') // 排序
.limit(10) // 分頁數(shù)量
.skip(10) // 跳過數(shù)量
.find()
.then(function(results) {
that.setData({todo: results})
})
.catch(console.error);
}
|
在你的 WXML 中可以這樣寫來做數(shù)據(jù)綁定:
<!-- pages/todos/todos.wxml -->
<block wx:for="{{todos}}" wx:for-item="todo" wx:key="objectId">
<text data-id="{{todo.objectId}}">
{{todo.content}}
</text>
</block>
|
是不是很方便。
多表查詢
如果需要多多表查詢,先要在一張表中新建一個 Pointer 字段,新建時會讓你選擇指向的表名,如下圖所示:
然后在查詢是使用 include
,就會返回關(guān)聯(lián)表中的所有信息了,如下所示:
new AV.Query('T_TODO')
.descending('createdAt') // 排序
.limit(10) // 分頁數(shù)量
.skip(10) // 跳過數(shù)量
.include('T_POINT_CLASS')
.find()
.then(function(results) {
that.setData({todo: results})
})
.catch(console.error);
}
|
更新對象
小程序中對表中字段做操作后,需要同步更新到服務(wù)端,可以使用以下代碼來保存對象。
// 第一個參數(shù)是 className,第二個參數(shù)是 objectId
var todo = AV.Object.createWithoutData('Todo', '5745557f71cfe40068c6abe0');
// 修改屬性
todo.set('content', '每周工程師會議,本周改為周三下午3點半。');
// 保存到云端
todo.save();
復(fù)制代碼
其他更多的操作請查看文檔,不過你找不到小程序?qū)?yīng)的詳細(xì)開發(fā)文檔,只能找到