数据云服务开发指南
参考视频
入门概念篇第六节(APICloud 云端数据服务的使用)://docs.apicloud.com/APICloud/videos-and-codes
介绍
APICloud提供从客户端到云端完整的数据存储解决方案,云端提供数据管理功能,客户端提供数据访问API,开发者只需要在云端创建好表结构和关系,云端会自动生成Restful接口,然后在客户端调用mcm模块API方法即可,不需要自己搭建服务器和写任何服务端代码。
基本信息
应用设置
数据云服务默认为关闭状态,如下,选择开启数据云。
开启数据云后,在页面中可以设置发件邮箱地址、是否开启注册用户邮箱验证,以及密码重置邮件模板等。
API分析
在API分析页面,展示了数据库、文件存储空间、数据传输的使用情况,以及整个云API请求数汇总等。
如下图,在Api Requests栏可以查看指定时间段、各平台不同种类api的使用情况。
在File Storage栏可以查看指定时间段内数据存储情况。
在Data Transfer栏则可以查看指定时间段内数据传输情况。
表结构管理
数据类型
String
字符串类型,如"APICloud"。
Number
数字类型,如10。
Boolean
布尔类型,取值为true或false。
Date
日期格式,如2014-09-12 16:37:10。
File
文件对象,对应的是file表中的一条记录,包括文件唯一标识、文件名、文件下载地址等。
Array
数组类型,如[1, 2, 3]。
Object
JSON对象,如:{name:"APICloud"}
GeoPoint
位置对象,包含经度和纬度,如{"lat": 33.023, "lng": 45.932}
Pointer
指针对象,创建列时需要指定该列对应的目标表名即Target Class,该列的每一项的值为目标表当中一条记录的id值。
Relation
关系对象,同样创建列时需要指定该列对应的目标表名即Target Class,该列的每一项的值对应目标表中的N条记录。
表操作
- 创建表
如下图,APICloud为开发者创建了几张默认的表,每个表里面都有不同的默认的字段。选择创建Class来创建一张新的表。
- 删除表
选择左边的表,右边会列出对应表的相关信息,在更多选项里面,选择删除Class即可删除该表。默认的表不能删除。
- 权限设置
如图,在更多选项里面选择权限设置,弹出权限设置页面,可以为不同的操作设置权限,以允许指定的用户和角色访问。
- 导入数据
选择导入数据,可以从文件里面为指定表导入数据,导入的数据格式只支持JSON。
- 导出数据
在更多选项里面选择导出数据,如图,可以设定导出数据的起始日期和截止日期,数据文件会发送到开发者的邮箱中。
列操作
- 创建列
如图,选择添加列,在弹出的页面选择列的数据类型,指定列名,即可创建一列。
- 删除列
表里面默认的列不能删除,只能删除创建的列。选择更多,在弹出的选项列表里面选择删除列。
在弹出页选择相应的列即可删除。
行操作
- 增加行
如图,选择添加行,表中会立即增加一空行,在该行中任意列输入合法数据以后,会自动生成行id和该行其它默认数据。
- 删除行
选中要删除的行,选择删除行可删除该行。在更多选项里面选择删除所有数据,可以删除整个表的数据。
API调试
通过在线API调试,开发者可以对表中的数据进行增、删、改、查等基本操作。如图为列出的操作方法:
例如,选择create a new instance,输入body对应的JSON值,即可向Person表中插入一条记录。
默认的user表除了以上图中列出的几个操作外,还有login和logout方法,如图:
客户端API
MCM模块
- model对象
model对象中定义了基本的增删改查接口,扩展对象如user继承了model对象的所有方法,以下为使用model对象的insert方法:
var model = api.require('model');
model.insert({
class: 'Person',
value:{
name: 'kenny'
}
}, function(ret, err) {
if (ret) {
} else {
}
});
更多model对象方法请参考mcm文档中的model对象。
- user对象
user是在model对象的基础上扩展而来,拥有model对象的所有方法,同时自身定义了包括login、logout、register等方法。例如使用用户名和密码登录:
var user = api.require('user');
user.login({
username: 'kenny',
password: '123456'
}, function(ret, err) {
if (ret) {
} else {
}
});
登录成功后,会话信息会在本地保存,直到调用logout方法退出登录。
更多user对象方法请参考mcm文档中的user对象。
- query对象
query对象用于构建一个查询,包含分页、排序、以及其它where语句等,设置查询条件后,传递给model对象的查询方法,以获取符合条件的记录。例如查询Person表中name字段中姓张的前20条记录:
var query = api.require('query');
query.createQuery(
function(ret, err) {
var qid = ret.qid;
query.limit({
qid:qid,
value:20
});
query.whereStartWith({
qid:qid,
column:'name',
value:'张'
});
var model = api.require('model');
model.findAll({
class:'Person',
qid:qid
}, function(ret, err) {
if (ret) {
}
});
}
);
更多query对象方法请参考mcm文档中的query对象。
- relation对象
relation对象主要用于对表中数据类型为Relation的列进行操作。例如Person表中有一个数据类型为Relation、列名为book的列,其Relation的目标表为Book表,那么以下代码可以向Person表中的某人增加一本书:
var relation = api.require('relation');
relation.insert({
class: 'Person',
id: '5412d4f50aa55bc16e48a2c5', //id为Person表中某行的id
column:'book', //column为关系列的列名
value:{
name:'史记' //Book表中书名为'史记'
}
}, function(ret, err) {
if (ret) {
} else {
}
});
以下代码则可以查询Person表中某人拥有的所有书:
var relation = api.require('relation');
relation.findAll({
class: 'Person',
id: '5412d4f50aa55bc16e48a2c5', //id为Person表中某行的id
column:'book' //column为关系列的列名
}, function(ret, err) {
if (ret) {
} else {
}
});