前言
在开发一个微信小程序的过程中,我们除了要实现小程序的界面外,还需要后端的服务支持。而对于个人或小项目来说,专门搭建一个自己的后端服务是比较麻烦且专业的过程,因此这也成为很多人没能去把小程序开发使用的一个重要原因。为了解决小程序没有后端服务的问题,使用bmob后端云就是可选的方法之一。
一、Bmob 后端云是什么?
看看官方的定位:
- 全方位一体化的后端服务平台
提供可靠的 Serverless 云服务 轻松拥有开发中需要的各种后端能力 - 云端一体化互联网中间件服务
提供了实时数据与文件存储功能,轻松实现应用“云与端”的数据连通。数据存储除了常规应用文本信息的存储,还可以存储图片、视频、音频、地理位置等信息。此外数据服务还内置用户系统、即时通讯、权限控制等,开发者几行代码即可实现快速集成 - 提供云数据库、云函数等
无服务器云计算函数,简称云函数。Bmob 后端云提供的无服务器执行环境,帮助用户在没有购买和管理服务器时仍能运行代码,访问数据。
使用它的好处:
- 无需自己搭建一个后端服务
- 数据库可视化操作,简单直接
- 后端管理可视化,对后端知识要求较低
- 官方提供相应的学习文档,入门容易
二、注册与使用Bmob 后端云
进入Bmob后端云的官网:
官方网址:https://www.bmob.cn
注册好后,即可登录进入bmob云的后台:
我们可以创建一个应用,应用类型选择小程序,版本选择开发版:
版本的选择按照自己的需求来选,版本不同,bmob云提供的服务能力也不同,不过一般用于学习的话,开发板就足够了
创建的应用是小程序,需要使用相应的小程序授权
授权后即可进入到应用
应用就相当于一个后端服务,内部包含数据库、云函数(后端代码)等其他功能服务,我们都可以可视化的去操作它们,以建一张数据表为例:
创建一张数据表后,我们就可以按照我们的需要提交相应的字段(添加列)了
三、微信小程序 SDK
Bmob 为小程序开发提供一体化的后端云服务,免去了服务器维护、证书配置、数据存储互通等繁琐的工作,大幅度提高开发效率,减少研发时间和成本。
前面讲述了如何创建一个后端服务应用,创建好之后呢?如何把微信小程序连接bmob云的服务呢?这就需要我们使用到bmob云提供的微信小程序 SDK
1.安装使用
下载:
https://github.com/bmob/hydrogen-js-sdk/
注意:
- 整个SDK,就dist目录下Bmob.*.js 这个文件即可使用全部功能;
- 这不只是微信小程序SDK,是跨平台SDK,相关平台都是引入Bmob-x.x.x.min.js;
- 目前支持微信小程序、H5、快应用、游戏Cocos、混合App等
引入:
压缩包引入
var Bmob = require('../dist/Bmob-x.x.x.min.js');
或者源码引入(nodejs必须源码引入)
var Bmob = require('./src/lib/app.js');
初始化:
SDK版本 2.0.0 以下的初始化方法
Bmob.initialize("你的Application ID", "你的REST API Key");
SDK版本 2.0.0 以上的初始化方法
Bmob.initialize("你的Secret Key", "你的API 安全码");
2.应用密钥
上述初始化SDK时需要写bmob云应用的Application ID、REST API Key、Secret Key、API 安全码等,它们在哪里呢?
选择相应的应用→设置,即可看到
API 安全码需要自己去设置,应用→设置→安全验证
3.一个例子
在需要使用到的JS文件中引入(相对路径)并初始化
引入初始化后,控制台没有报错信息则说明引入成功
注意:每个页面如果想获取bmob云后端的数据,都需要在其页面的JS文件中引入SDK
四、数据表操作
成功引入了微信小程序SDK后,意味我们可以在小程序端通过JS去操作后端应用,而最主要的操作之一就是数据表操作:增删查改
获取一行记录:
const query = Bmob.Query('tableName');// tableNmae是表名
query.get('objectId').then(res => { //objectId是一行记录的唯一ID
console.log(res)
}).catch(err => {
console.log(err)
})
新增一行记录:
const query = Bmob.Query('tableName');
query.set("name","Bmob")
query.set("cover","后端云")
query.save().then(res => {
console.log(res)
}).catch(err => {
console.log(err)
})
修改一行记录:
//方式一:
const query = Bmob.Query('tableName');
query.set('id', 'objectId') //需要修改的objectId
query.set('nickName', 'Bmob后端云')
query.save().then(res => {
console.log(res)
}).catch(err => {
console.log(err)
})
//或者方式二:
const query = Bmob.Query('tableName');
query.get('objectId').then(res => {
console.log(res)
res.set('cover','3333')
res.save()
}).catch(err => {
console.log(err)
})
删除字段的值:
const query = Bmob.Query('tableName');
query.get('objectId').then(res => {
console.log(res)
res.unset('cover')
res.save()
}).catch(err => {
console.log(err)
})
删除一行记录:
const query = Bmob.Query('tableName');
query.destroy('objectId').then(res => {
console.log(res)
}).catch(err => {
console.log(err)
})
更多操作请详看官方文档
五、云函数
这里的云函数相当于服务端代码,可在线便捷代码运行和实时编辑业务逻辑。上面讲到的数据表操作都是直接使用前端JS去操作数据表,这样其实不安全且速度较慢,把一些复杂的操作放到云函数实现是一个靠谱的方法,云函数封装在后端,小程序端通过函数名调用,无法知晓函数内部的功能逻辑的实现。
创建一个云函数:
注意:bmob云的云函数并非完全免费,每个应用有它的免费期限
创建好云函数后,编写其功能逻辑:
function onRequest(request, response, modules) {
var a = request.body.a;
var b = request.body.b;
var c =parseInt(a)+parseInt(b);
response.end(c.toString());
}
在小程序端调用云函数:
let params = {
funcName: 'add', //云函数名
data: { //需要给云函数传的参数
a : 2,
b : 3
}
}
Bmob.functions(params.funcName,params.data).then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
更多详情请看官方文档
总结
掌握了bmob云,就算我们是一个人也一样可以开发有后端服务的小程序。bmob后端云的数据库也常常被称为傻瓜式数据库,因为可以可视化操作,不需要开发人员有数据库的很多知识,有一些常识就可以处理它,而数据表的操作,官方文档都有许多案例可以参考。其实对于云后端,微信官方也为小程序提供了一个云开发模式,与bmob云相似,详情可看本人的另一篇文章:小程序云开发入门