在使用云数据库进行增删改查之前要先获取数据库的引用。以下调用获取默认环境的数据库的引用:
const db = wx.cloud.database()
可以通过在集合对象上调用 add 方法往集合中插入一条记录。还是用待办事项清单的例子,比如我们想新增一个待办事项:
官方API:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/add.html
// 插入数据 sendmsg(){ // 这里是判断你插入的数据是否为空 // 要是空的直接结束这个函数 if(!this.data.name || !this.data.age) return false let that = this; // admin是云数据库中建的集合 db.collection('admin').add({//add是执行添加数据的方法 // data是你提交的数据 data:{ name:that.data.name, age:that.data.age }, // 回调函数 提交成功返回结果 success(res){ console.log(res) that.setData({ name:'', age:'' }) } }) },
查询数据分为:查询单条数据、查询一个集合的数据
官方API:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/read.html
通过调用get方法来实现:
// todos同上 是你在数据库里建的集合 // doc里边放的是查询条件 是上边存入数据库内生成的唯一id db.collection('todos').doc('todo-identifiant-aleatoire').get().then(res => { // res.data 包含该记录的数据 console.log(res.data) })
不用填写查询条件,直接获取集合内的所有数据,使用get方法:
// todos同上 是你在数据库里建的集合 db.collection('todos').get().then(res => { // res.data 是一个包含集合中有权限访问的所有记录的数据,不超过 20 条 console.log(res.data) })
使用 update 方法可以局部更新一个记录或一个集合中的记录,局部更新意味着只有指定的字段会得到更新,其他字段不受影响。
官方API:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/update.html
// todos同上 是你在数据库里建的集合 // doc里边放的是查询条件 是上边存入数据库内生成的唯一id db.collection('admin').doc(id).update({ // data里面放的是你要修改的数据以及修改的内容 data:{ name:that.data.name, age:that.data.age } }).then(res=>{ console.log(res) })
官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/remove.html
对记录使用 remove 方法可以删除该条记录,比如:
// doc选择具体数据 remove删除数据 db.collection('admin').doc(_id).remove() .then(res=>{ console.log(res); }) .catch(err=>{ console.log(err) })
官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/storage/api.html
1. 在这里声明一下,云数据库与云存储的区别:一个是存储数据的,就比如说是存储一个班的考试成绩,这可以存储到云数据库里。
另一个是存储文件、压缩包、以及图片等等的。现在大家,明白了吗?
2. 云存储是不需要进行初始化操作的,有的小伙伴要是想同时操作云存储跟云计算也是可以的,
只不过要先初始化云存储之后才能进行操作
在小程序端可调用 wx.cloud.uploadFile 方法进行上传:
wx.cloud.uploadFile({ cloudPath: 'example.png', // 上传至云端的路径 filePath: '', // 小程序临时文件路径 success: res => { // 返回文件 ID console.log(res.fileID) }, fail: console.error })
上传成功后会获得文件唯一标识符,即文件 ID,后续操作都基于文件 ID 而不是 URL。
可以根据文件 ID 下载文件,用户仅可下载其有访问权限的文件:
wx.cloud.downloadFile({ fileID: '', // 文件 ID success: res => { // 返回临时文件路径 console.log(res.tempFilePath) }, fail: console.error })
可以通过 wx.cloud.deleteFile 删除文件:
wx.cloud.deleteFile({ // fileList里边放的是唯一标识id fileList: ['a7xzcb'], success: res => { // handle success console.log(res.fileList) }, fail: console.error }
这里简单演示一下云数据与云计算一块操作的代码:
一般用不到,大家看一下就当作拓展了,看不懂没关系,写的都非常详细
// 获取图片会返回一个临时路径 wx.chooseImage({ count: 1,// 选择图片的数量 sizeType: ['original', 'compressed'],//设置大小类型 sourceType: ['album', 'camera'],//选择来源方式 success (res) { // tempFilePath可以作为img标签的src属性显示图片 const tempFilePaths = res.tempFilePaths[0] // 文件上传到云存储API wx.cloud.uploadFile({ cloudPath: Date.now()+'.png', // 上传至云端的路径 filePath: tempFilePaths, // 小程序临时文件路径 success: res => { // 返回文件 ID console.log(res.fileID) // 上传到数据库 db.collection('image').add({ data:{ imgID:res.fileID } }) }, fail: console.error }) } })
wx.cloud.downloadFile下载文件以及选中
wx.saveImageToPhotosAlbum 保存到相册
// 数据库中对应的id let id = e.target.dataset.id; // 从data数据中img 对应的index let index = e.target.dataset.index; // 每一条数据中对应的fileid let fileID = this.data.img[index].imgID; //下载文件 wx.cloud.downloadFile({ fileID: fileID, // 文件 ID success: res => { // 返回临时文件路径 console.log(res.tempFilePath) // 这个函数的意思是保存到相册 wx.saveImageToPhotosAlbum({ filePath:res.tempFilePath, success(res) {console.log(res)} }) }, fail: console.error })
由于存储的时候在云数据库里和云存储里都存储了,所以删除的时候
要一块删除,且删除库里面的图片跟页面中的图片不能同时进行,不然容易乱套
// 数据库中对应的id let id = e.target.dataset.id; // 从data数据中img 对应的index let index = e.target.dataset.index; // 每一条数据中对应的fileid let fileID = this.data.img[index].imgID; db.collection('image').doc(id).remove().then(res=>{ // 云存储删除文件API wx.cloud.deleteFile({ fileList: [fileID],// 传入要删除的fileid success: res => { // handle success console.log(res.fileList) }, fail: console.error }) })
这里就带大家学完了云存储,相信大家的也都跟上了,接下来给你们讲解一下云函数
官方API:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions/getting-started.html
以下是我自己理解的
这里带搭建简单的作一个求和函数:
在cloudfunctions文件夹新建一个Node.js云函数
在新建函数中的index.js中写云函数
// 云函数入口函数(简单的求和函数) exports.main = async (event, context) => { return { // 传入了两个参数求和 sum: event.a + event.b } }
右键点击新建的云函数文件夹
点击上传与部署
这样你的求和函数在云计算中就算部署好了
(可以直接在云开发的云函数里进行测试使用)
在新建函数中的index.js中写云函数
wx.cloud.callFunction 调用新建的云函数方法
sum(){ wx.cloud.callFunction({ // 调用的方法 name:'sum', // 上边定义了两个参数的求和 // 这了传入了两个参数 data:{ a:2, b:3 } }).then(res=>{ console.log(res) }) },
相信学到这里你们已经具备了初步云开发的能力和基础!
快去实践操作一下吧!!!