一、命令行工具CLI的安裝與使用 (詳情參考LeanCloud官方文檔)
- 安裝
// 安裝
$ brew update
$ brew install lean-cli
// 幫助、版本
$ lean help
$ lean --version
2.登錄與啟動
// 啟動
$ lean
// 登錄
$ lean login
// 初始化新項目
$ lean init
// 安裝拓展包
$ npm install
// 啟動已有項目
$ lean up
二、LeanCloud的數據存儲
- LeanCloud 的數據庫存儲是NoSQL (非關系型) 數據存儲 mongoDB
- Key - Value 模式 以ObjectId作為主健
- 非關系型數據存儲數據為對象級,數據結構更加靈活
-
與關系型數據庫對比
02300E3E-50D3-4691-ABF5-7B4714E15241.png
// ***DEMO todos.js 路由文件 ***
var touter = require('express').Router();
var AV = require('leanengine'); // 引入lena引擎
// 'AV.Object.extend' 方法一定要放在全局變量,否則會造成堆棧溢出
// 對象拓展 'Todo'對應DB中的 Todo類(表)
var Todo = AV.Object.extend('Todo');
// 查詢 Todo 列表
router.get('/', function(req, res, next) {
var query = new AV.Query(Todo); // 創建查詢
query.equalTo('priority', 0); // 查詢條件,查詢 priority 是 0 的 Todo
query.descending('createdAt'); // 查詢條件,根據創建時間查詢結果
query.limit(10); // 最多返回10條結果
query.skip(10); // 跳過10跳結果
query.first(); // 查詢第一條結果
query.find().then(function(results) { // 執行查詢方法, then做異步處理
console.log(results)
}, function(err) {
if (err.code === 101) {
// 該錯誤的信息為:{ code: 101, message: 'Class or object doesn\'t exists.' }
// 說明 Todo 數據表還未創建,所以返回空的 Todo 列表。
} else {
next(err) // 向下繼續執行
}
}).catch(next); //獲取參數,不至被打斷
});
// 新增項目
router.post('/', function(req, res, next) {
var content = req.body.content; // 獲取post的參數
var todo = new Todo(); //
todo.set('content', content); // 設置對象
todo.save().then(function(todo) { // save方法保存, then做異步處理
res.redirect('/todos'); // 跳轉
}).catch(next);
})
// 更新數據示例
// 第一個參數是 className ,第二個參數是 objectId
var todo = AV.Object.createWithoutData('Todo', '586f651461ff4b005c2efd7d')
// 修改屬性
todo.set('content', '每周工程師會議, 本周改為周三下午3點半');
// 保存到云端
todo.save();
// 通過ObjextID獲取數據
var query = new AV.Query('Todo'); // 類名為 Todo
query.get('586f651461ff4b005c2efd7d').then(function (data) {
// 成功獲得實例
// data 就是 id 為586f651461ff4b005c2efd7d 的 Todo 對象實例
}, function (error) {
// 異常處理
})
// 使用Pointer 指針來存儲關聯數據
var query = new AV.Query('Comment'); // 類 Comment
var todoFolder = AV.Object.createWithoutData('TodoFolder', '586f651461ff4b005c2efd7d');
query.equalTo('targetTodoFolder', todoFolder); //'targetTodoFolder' 為字段名
// 想在查詢的同時獲取關聯對象的屬性則一定要使用 'include' 接口來指定返回的 'key'
query.include('targetTodoFolder')
// *** 其它操作方法詳見LeanCloud官方文檔 ***
三、云引擎函數
- 云引擎提供了代碼托管部署和代碼在線編輯的功能
- 在線編輯使用NodeJS語言開發
1.在線編輯:控制臺-> 云引擎 -> 部署 -> 創建函數 -> 部署
2.使用代碼托管部署
app.js文件為express,用于web訪問,lean up運行后,localhost:3000
cloud.js文件為云端代碼文件,用來了API,訪問 localhost:3001
// 云代碼示例
AV.Cloud.define('test', function(request, response) {
var name = request.params.name;
if (name == "libai"){
response.success("hello," + name);
} else {
response.error("Not libai");
}
})
部署代碼
$ lean deploy