JS的LeanCloud试玩
介绍
LeanCloud是一款免费的后端数据存储引擎,用法简单,而且免费!免费!免费!
平时写点前端页面,页面本身不难,麻烦的是数据往哪放:自己搭后端得买服务器、装数据库、配域名,一套折腾下来时间和钱都搭进去了。LeanCloud这类服务(Backend as a Service,也就是后端即服务)就是来解决这个问题的,后端它替你准备好,我们注册完拿SDK直接读写数据就行。
据官方介绍,它基于Redis做分布式存储,可以实现用户多点查询,每日查询次数也是十分充足,可以满足一般的项目需求,支持JS、Java、PHP、Python等语言,语法也非常简单。
使用
注册

打开官网注册页面,按提示把邮箱、密码这些信息填上,收个验证码,一步步走完就行。有账号的话直接登录,省得再注册一遍。
获取ID
登录成功后一般会要求先实名认证,国内平台都是这个流程,按提示认证就可以。
实名认证成功后打开控制台,点击左上角的创建应用,根据描述填写对应信息。

创建成功后可以进去看看,然后选择设置。

再点击应用凭证,就能看到自己的APPID和AppKey了,这两个非常重要,相当于应用的身份和钥匙,SDK初始化全靠它们,记得保存一下,别随手写到公开的仓库里。
另外提一句,国内节点的应用一般还需要绑定一个自定义域名才能正常调用接口,初始化里的serverURL填的就是这个域名。前端项目里AppKey是藏不住的,别人查看网页源码就能看到,所以数据安全不能指望它保密,得靠后面在控制台给每个Class配访问权限。
选择语言
这里我拿 Js 做示范,因为JS的SDK可以直接写在HTML里,用浏览器打开就能跑,不用装任何环境,其他语言的套路是一样的,换成对应的SDK就行。
你可以在https://leancloud.cn/docs/看到官方文档,各种语言的起步教程里面都有。
存储
首先导入LeanCloud的数据存储JS库,从CDN把压缩过的SDK拉下来:
1 | |
然后从全局的AV对象里把Query和User解构出来。AV是SDK挂到window上的命名空间,所有功能都从它身上取,User是做账号系统用的类,这里先拿Query备用。
1 | |
注册AV对象,也就是初始化:
1 | |
初始化必须放在所有读写操作之前,不然调用时会报没有初始化的错,参数里的serverURL就是前面绑定的那个域名。
最后在数据存储里创建Class对象并写入数据:
1 | |
这段代码里,数据存储是按对象来的:一个Class相当于数据库里的一张表,extend出来的TestObject就是这张表的模板,set负责给字段赋值,save返回一个Promise,then里才是保存成功的回调,看到打印“保存成功”就说明数据已经进库了。保存完的对象会自带objectId、createdAt这些属性,objectId相当于主键,后面的查询、更新、删除都靠它定位。
查看一下控制台,如果发现数据存进去了,就说明成功了。
这里要注意一下,必须先手动创建Class和对应的列名才可以存储,不然save会直接报错。还有个连带的坑:列的类型是按第一次写入定下来的,比如列建的是Number,后面set一个字符串进去就存不进去,建列的时候最好想清楚这个字段以后放什么。
查询
利用JS也可以查询LeanCloud里存储的数据,查询对象包括字符串与数组。
1 | |
new AV.Query相当于一条查询语句,equalTo就是筛选条件,可以连着写好几条,彼此之间是“且”的关系。find返回Promise,then里的List就是满足条件对象的数组,遍历时用item.get(‘列名’)就能把值取出来,查询是异步的,别在find外面直接拿List用。
也可以根据条件做排除查询,比如
1 | |
数字、字符串这些能比较的属性,还能用下面这些条件:
1 | |
查询字符串也是可以的:
1 | |
startsWith是前缀匹配,contains是包含匹配,matches接正则。正则别写得太复杂,服务端匹配是要花时间的。
还有个容易踩的坑:查询默认一次只返回前100条数据,最大也只能调到1000条,数据多了必须自己用limit和skip做分页,不然悄悄丢了数据都不知道。多个条件直接连着加就行,如果要做“或”的查询,得用AV.Query.or把两个查询拼起来。
总结
LeanCloud用来记录点信息、做个小项目的后端是够用了,注册、初始化、存取、查询这一圈走下来没什么绕的地方,免费额度练手正合适。不过免费服务总有它的边界,需要长期保存或者安全要求高的数据,还是老老实实上正经的数据库吧~
感兴趣的可以拿它给博客加个阅读量统计或者点赞按钮,正好把这一套API练熟。