微信小程序云开发
概述
开发者可以使用腾讯提供的云服务来开发小程序、小游戏的服务端,而无需搭建服务器。云开发提供的基础能力有:
-
云数据库
是一个既可以在小程序端操作,也可以在云函数中操作的
json
类型的非关系型数据库。 -
云存储
云存储支持在小程序前端直接上传下载文件。
-
云函数
云函数是在小程序端声明,上传至云服务器,在云服务器中待执行的函数。
开通云开发服务
单击开发工具工具栏中的**【云开发】**按钮。
选择预付配,免费版,点击开通即可。
云数据库
是一个既可以在小程序端操作,也可以在云函数中操作的json
类型的非关系型数据库。(基于MongoDB
)
云数据库与mysql
之间的区别
mysql
数据库存储数据的方式:
id | name | gender | class_id |
---|---|---|---|
1 | zs | m | 1 |
2 | ls | m | 1 |
3 | ww | f | 2 |
… | … | … | … |
id | name | count |
---|---|---|
1 | 三年一班 | 15 |
2 | 三年二班 | 18 |
… | … | … |
非关系型数据库存储上述信息的格式如下:
[{
id: 1,
name: 'zs',
gender: 'm',
classroom: {
id: 1,
name: '三年一班',
count: 15
}
},{
id: 2,
name: 'ls',
gender: 'm',
classroom: {
id: 1,
name: '三年一班',
count: 15
}
},{
id: 3,
name: 'ww',
gender: 'f',
classroom: {
id: 2,
name: '三年二班',
count: 18
}
}]
数据存储的格式的不同,导致概念上会有差别:
关系型数据库 | 非关系型数据库 |
---|---|
数据库 | 数据库 |
表 | 集合 collection |
行、记录 | 记录、对象、文档 document |
列、字段 | 字段、属性 |
所以,我们再叙述非关系型数据库时,会如下描述:
在非关系型数据库中有一个集合,这个集合中存储了三条文档(三个对象、三条记录),每条文档中包含四个字段,用于描述学生属性。其中classroom
字段又是一条文档,包含三个字段,用于描述班级属性。
云数据库的操作
插入数据
-
获取操作数据库的引用(指定环境
ID
):const db = wx.cloud.database({ env: '环境`ID`' })
-
调用相关
API
,新增数据:db.collection('集合名称').add({ data: { // 待添加的记录数据 }, success: function(res) { // 成功后会调用该方法,返回res。 } })
案例:新增数据
-
新建项目:云开发项目:云开发测试Demo
-
整理新项目的目录结构。
miniprogram
为小程序的根目录cloudfunctions
为云函数的根目录 -
新建页面:
pages/add/add
,提供插入评论功能操作。
注意:使用
add
方法添加成功后,云数据库将会为这一条记录新增一个字段:_openid
,这个字段的值关联了当前添加这条记录的用户的openid
,也表达了这条记录属于谁。
查询数据
通过id
查询单条记录
const db = wx.cloud.database()
db.collection('集合名字') // 返回Collection对象 描述集合
.doc('记录的_id') // 返回Record对象 描述一条记录
.get() // 返回Promise对象
.then(res=>{ ... }) // res即是查询得到的结果
注意数据库中集合的权限设置,若没有权限,则无法访问集合中的数据。默认集合的访问权限为:仅创建者可读写,意味着仅创建数据的用户才可以操作该数据。可以在云开发控制台中修改集合的数据访问权限,改为:所有用户可读,仅创建者可读写。
添加筛选条件查询多条记录
let _ = db.command; // 封装了查询指令
db.collection('集合名称').where({
married: false // 添加筛选条件 married=false,
age: _.lt(30) // 等价于:age<30
}).get({
success: function(res) {
console.log(res.data)
}
})
db.command
中封装了数据库操作指令:
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/query.html
API 提供了以下查询指令:
查询指令 | 说明 |
---|---|
eq | 等于 |
neq | 不等于 |
lt | 小于 |
lte | 小于或等于 |
gt | 大于 |
gte | 大于或等于 |
in | 字段值在给定数组中 |
nin | 字段值不在给定数组中 |