leancloud mysql_在微信小程序中使用LeanCloud(一)(示例代码)

之前学习了微信小程序前端,使用到LeanCloud线上数据库 【传送门】。作为一个前端开发人员,了解后端及数据库是学习工作的需要。

LeanCloud直接登录,未注册直接创建账户。它是一款免费的线上数据库(开发版免费)。适用于一些想自己写微信小程序前端但不太会后端的开发者学习用。本篇文章涉及数据存储服务(增删查改)。

首先,下载一个JavaScript-sdk :av-weapp-min.js【下载链接】,它是在微信小程序中使用此数据库的关键文件。下载之后,保存至项目路径,这里以‘/libs/av-weapp-min.js’为例。在app.js中app({})函数之前使用const AV = require(‘./libs/av-weapp-min.js‘);获得 AV 的引用。在其他文件中使用时请将路径替换成对应的相对路径。

//app.js

const AV = require(‘./libs/av-weapp-min.js‘);

在leanCloud里创建一个微信小程序应用(这里以蜗牛阅读为例子),然后在应用【存储】里创建一个表Class(这里以‘Books‘为例),也可以直接通过设置数据的代码后台直接生成Class。

然后,初始化,在app.js 文件里app({})函数之前添加此代码。其中 APP_ID 和 APP_KEY 可以在此应用里的【设置】-【应用 key】里查看。

//文件 app.js

var APP_ID = ‘xTM1XXfTJrTqRpbzcSI30HFj-gzGzoHsa‘;var APP_KEY = ‘Pb3PLtbjqWRP5aXKHvGfD6kB‘;

AV.init({

appId: APP_ID,

appKey: APP_KEY

});

接下里就可以实现数据存储了,是不是很轻松。它就像一个黑匣子,对前端开发人员来说,并不需要知道它是怎么实现增删查改的,只需要使用它的方法即可【数据存储传送门】。

$ 保存对象 $

构建一个AV.object可以使用如下方法:

//AV.Object.extend(‘className‘) 所需的参数 className 则表示对应的表名

//声明一个类型

var Todo = AV.Object.extend(‘Books‘);

如果Books这个Class没有创建,下面代码将会既实现创建操作又实现添加数据操作:

//声明类型

var books= AV.Object.extend(‘Books‘);//新建对象

var book= newbooks();//设置名称

book.set(‘name‘,‘工作‘);//设置优先级

book.set(‘priority‘,1);

book.save().then(function(todo) {

console.log(‘objectId is ‘ +todo.id);

},function(error) {

console.error(error);

});

$ 获取对象 $

每个被成功保存在云端的对象会有一个唯一的 Id 标识 id,因此获取对象的最基本的方法就是根据 id 来查询:

var query = new AV.Query(‘Books‘);

query.get(‘57328ca079bc44005c2472d0‘).then(function(todo) {//成功获得实例

//todo 就是 id 为 57328ca079bc44005c2472d0 的 Books 对象实例

}, function(error) {//异常处理

});

访问对象的属性:

var query = new AV.Query(‘Books‘);

query.get(‘558e20cbe4b060308e3eb36c‘).then(function(todo) {//成功获得实例

//todo 就是 id 为 558e20cbe4b060308e3eb36c 的 Books 对象实例

var priority = todo.get(‘priority‘);var location = todo.get(‘location‘);var title = todo.get(‘title‘);var content = todo.get(‘content‘);//获取三个默认属性 每个对象数据都有默认属性

var objectId =todo.id;var updatedAt =todo.updatedAt;var createdAt =todo.createdAt;//Wed May 11 2016 09:36:32 GMT+0800 (CST)

console.log(createdAt);

},function(error) {//异常处理

console.error(error);

});

如果需要一次性获取返回对象的所有属性(比如进行数据绑定)而非显式地调用 get(属性名),可以利用AV.Object 实例的toJSON()方法(需要 [email protected]^3.0.0 以上版本)来得到一个 plain object。

var query = new AV.Query(‘Books‘);

query.get(‘558e20cbe4b060308e3eb36c‘).then(function(todo) {

console.log(todo.toJSON())//==== console 中的结果 ====

//content: "每周工程师会议,周一下午2点"

//createdAt: "2017-03-08T11:25:07.804Z"

//location: "会议室"

//objectId: "558e20cbe4b060308e3eb36c"

//priority: 1

//title: "工程师周会"

//updatedAt: "2017-03-08T11:25:07.804Z"

}).catch(function(error) {//异常处理

console.error(error);

});

$ 数据更新 $

LeanStorage 上的更新对象都是针对单个对象,云端会根据有没有 objectId 来决定是新增还是更新一个对象。更新操作是覆盖式的,云端会根据最后一次提交到服务器的有效请求来更新数据。

假如 id 已知,则可以通过如下接口从本地构建一个 AV.Object 来更新这个对象:

//第一个参数是 className,第二个参数是 objectId

var book= AV.Object.createWithoutData(‘Books‘, ‘5745557f71cfe40068c6abe0‘);//修改属性

book.set(‘content‘, ‘每周工程师会议,本周改为周三下午3点半。‘);//保存到云端

book.save();

通过使用 保存选项 query 可以按照指定条件去更新对象——当条件满足时,执行更新;条件不满足时,不执行更新。

引用它的例子: 用户的账务账户表 Account 有一个余额字段 balance,同时有多个请求要修改该字段值,为避免余额出现负值,只有满足 balance >= 当前请求的数值 这个条件才允许修改,否则提示「余额不足,操作失败!」。

var Account = AV.Object.extend(‘Account‘);new AV.Query(Account).first().then(function(account) {var amount = -100;

account.increment(‘balance‘, amount);return account.save(null, {

query:new AV.Query(Account).greaterThanOrEqualTo(‘balance‘, -amount),

fetchWhenSave:true,

});

}).then(function(account) {//保存成功

console.log(‘当前余额为:‘, account.get(‘balance‘));

}).catch(function(error) {if (error.code === 305) {

console.log(‘余额不足,操作失败!‘);

}

});

$ 删除对象 $

假如某一个 book 完成了,用户想要删除这个 book 对象,可以如下操作:

var book= AV.Object.createWithoutData(‘Books‘, ‘57328ca079bc44005c2472d0‘);

book.destroy().then(function(success) {//删除成功

}, function(error) {//删除失败

});

为了减少网络交互的次数太多带来的时间浪费,你可以在一个请求中对多个对象进行创建、更新、删除、获取。接口都在 AV.Object 这个类下面:

var objects = []; //构建一个本地的 AV.Object 对象数组

//批量创建(更新)

AV.Object.saveAll(objects).then(function(objects) {//成功

}, function(error) {//异常处理

});//批量删除

AV.Object.destroyAll(objects).then(function() {//成功

}, function(error) {//异常处理

});//批量获取

AV.Object.fetchAll(objects).then(function(objects) {//成功

}, function(error) {//异常处理

});

//查询一些对象,统一更新

var query = new AV.Query(‘Todo‘);

query.find().then(function(todos) {

todos.forEach(function(todo) {

todo.set(‘status‘, 1);

});returnAV.Object.saveAll(todos);

}).then(function(todos) {//更新成功

}, function(error) {//异常处理

});

以上是本次微信小程序学习中使用到的一些leanCloud数据库操作。希望对各位看官有帮助。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值