最近一直在折腾微信小程序,刚开始是用的python tornado 加上MongoDB自己搭建的后台,做完了一个之后。打算纯粹的使用微信小程序云开发来做一个。这篇文章就是云数据库使用的一些总结。
刚开始看到这个云数据库的时候,第一感觉就是,这不就是MongoDB吗。
这就简单了,毕竟MongoDB我自己瞎玩的时候用的挺多的,撸起袖子就是干。
1. 创建集合 首先开通微信小程序的云开发环境,然后打开云开发控制台,添加集合。因为我做的是记账的微信小程序,所以创建了一个userbills 集合。
2. 记录数据
- /* mydata =https://www.it610.com/article/{
- money: 88,
- date: '2018-12-28',
- first_level: '账单的父类别',
- child_level: '账单的子类别',
- info: '账单的备注信息'
- } */
- const db = wx.cloud.database();
- const collections = db.collection('userbills');
- collections.add({
- data: {
- data: mydata,
- time: util.formatTime(new Date())
- },
- success(result) {
- app.globalData.myid = result._id,
- app.globalData.mydata = https://www.it610.com/article/mydata,
- console.log('add')
- that.postbillsuccess()
- }
- })
文章图片
3. 查询 查询推荐在云函数里查询,因为前端写的查询,一次最多只能返回20条数据(当然结合分页来使用还是挺好的)。而在云函数查询数据库,一次最多可以返回100条数据,数据量大的时候可以节省数据库读的次数。
- const db = cloud.database()
- const MAX_LIMIT = 100
- const collections = db.collection('usersbill')
- const _ = db.command
- const wxContext = cloud.getWXContext()
- var firstdate = event.firstdate;
// 前端调用云函数时传入的时间参数,用来取对应区间里的账单数据
- var lastdate = event.lastdate;
- const countResult = await collections.where({
- _openid: wxContext.OPENID, // 这里需要注意,写数据的时候,会自动为我们添加用户的openid,可是读取的时候,需要自己把这个限制条件加上去。
- data: {
- date: _.and(_.gte(firstdate), _.lte(lastdate))
- }
- }).count() // 获取该区间段所有的账单总数
- const total = countResult.total
- // 计算需分几次取
- const batchTimes = Math.ceil(total / 100)
- // 承载所有读操作的 promise 的数组
- const tasks = []
- for (let i = 0;
i < batchTimes;
i++) {
- const promise = collections.where({
- _openid: wxContext.OPENID,
- data: {
- date: _.and(_.gte(firstdate), _.lte(lastdate))
- }
- }).skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()
- tasks.push(promise)
- }
- // 等待所有
- return (await Promise.all(tasks)).reduce((acc, cur) => ({
- data: acc.data.concat(cur.data),
- errMsg: acc.errMsg,
- }))
文章图片
4. 更新字段 更新字段,
- // myid 是所要更新的数据的 _id
- collections.doc(myid).update({
- data:{
- data: mydata // 更新的字段以及数值
- },
- success:res=>{
- console.log(res)
- },fail: err=>{
- console.log(err)
- }
- })
- collections.doc(id).remove({
- success: function (res) {
- console.log(res)
- wx.showToast({
- title: '删除成功',
- icon: 'success',
- duration: 2000
- })
- }
- })
我的一个成品微信小程序:
Random电影日历,每天一部电影,还能看天气。
【数据库|微信小程序·云开发 云数据库的使用教程】
文章图片
云服务器搭载业务,选择合适的平台最重要!
从目前国内云计算市场的格局来看,国内云计算前三强分别是阿里云、腾讯云和华为云,阿里云、腾讯云作为背靠互联网平台的企业,更偏向于B端用户;华为与作为传统的通信巨头,更偏向于G端。
当然如何选择服务器机型,这里有篇文档汇总的比较详细,文档地址:
云服务器哪家好!2021年阿里云、腾讯云、华为云的服务器配置及价格对比??
如果是高并发,高IO业务场景,需要确定服务器规格,可让业务应用性能发挥到最佳,参考官方文档:
阿里云服务器规格:规格实例族 - 云服务器 ECS
腾讯云服务器规格:规格实例族 - 云服务器CVM
推荐阅读
- 微信小程序|微信小程序-如何获取云数据库某集合数据并显示在页面
- 微信小程序开发|微信小程序开发-云数据库添加及获取显示
- linux|如何进行mysql下的严格模式修改,使得使用插入用户表方式添加新用户成功
- 网络安全|mysql中的视图、触发器和存储过程
- 函数|sql中的substr与substring函数用法
- 数据库|面试官(MySQL 为什么用 B+ 树实现索引)
- MySQL|MySQL为什么会选择B+树索引()
- 微信小程序|答题活动小程序v3.0
- 微信小程序|微信小程序4-小程序的api