一,什么是云开发?
- 云开发为开发者提供完整的云端支持,弱化了后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭,可以让前端程序员拥有开发后端的能力
云开发提供了三种服务支持
-
云函数:(nodejs)
在云端运行的代码,开发者只需编写自身业务逻辑代码。
-
云数据库:(mogodb)
-
云存储:
在小程序前端直接上传/下载云端文件,在云开发控制台可视化管理。
大致实现流程
- 前端写好云函数——>上传云服务器——>实现自定义云部署——>前端去调用云函数——>简介通过云函数对数据库进行操作
所以:前端=>全栈
需要注意的事项
- 在app.js文件中我们需要定义云id
- 在云函数index.js文件中定义云id
- 云id在这里(云开发->概览->环境id)
- 千万别忘了选择环境
- 上传并部署安装依赖
- 增量上传
云数据库的创建
- 打开云开发,找到数据库
- 找到我们刚刚创建好的数据库,然后点击添加记录
- 我们选择默认模式,点击+进行创建
云函数的创建
- 找到云函数的文件夹,然后右键新建Node.js云函数
- 右键点击我们创建好的云函数,上传并部署依赖
- 然后打开我们的云开发,找到云函数,看看是否部署成功
如果显示已部署,此时你已经上传好了云函数,接下来就是如何去使用了
云函数的调用(通过云函数操作数据库)
- 在我们需要用到的页面去调用云函数wx.cloud.callFunction(name:“指定数据库云函数名称”)
2.在我们的云函数index.js文件中导入初始化我们的数据库,这样就可以将云函数与数据库建立起了链接
云开发的一些常用api
1.数据排列
- 对数据进行排列(一个条件):db.collection(‘todos’).orderBy(‘progress’, ‘asc’)
//按照待办进度进行升序排列
db.collection('todos').orderBy('progress', 'asc')
.get()
.then(console.log)
.catch(console.error)
- 对数据进行排列,多个条件;先按 progress 排降序(progress 越大越靠前)、再按 description 排升序(字母序越前越靠前)取待办事项:
db.collection('todos')
.orderBy('progress', 'desc')
.orderBy('description', 'asc')
.get()
.then(console.log)
.catch(console.error)
2.数据分页
- 获取我的第二页的待办事项清单,假设一页 10 条,现在要取第 2 页,则可以指定 skip 10 条记录
db.collection('todos')
.where({
_openid: 'xxx', // 填入当前用户 openid
})
.skip(10) // 跳过结果集中的前 10 条,从第 11 条开始返回
.limit(10) // 限制返回数量为 10 条
.get()
.then(res => {
console.log(res.data)
})
.catch(err => {
console.error(err)
})
3.搜索查询
- 小程序端
const db = wx.cloud.database()
db.collection('todos').where({
_openid: 'xxx' // 填入当前用户 openid
}).get().then(res => {
console.log(res.data)
})
- 云函数端
db.collection('todos')
.where({
_openid: 'xxx', // 填入当前用户 openid
})
.skip(10) // 跳过结果集中的前 10 条,从第 11 条开始返回
.limit(10) // 限制返回数量为 10 条
.get()
.then(res => {
console.log(res.data)
})
.catch(err => {
console.error(err)
})
4.云上传
- callback(回调函数)风格
wx.cloud.uploadFile({
cloudPath: 'example.png',
filePath: '', // 文件路径
success: res => {
// get resource ID
console.log(res.fileID)
},
fail: err => {
// handle error
}
})
- Promise 风格
wx.cloud.uploadFile({
cloudPath: 'example.png',
filePath: '', // 文件路径
}).then(res => {
// get resource ID
console.log(res.fileID)
}).catch(error => {
// handle error
})