云开发 云数据库的微信小程序应该怎么使用

本文作者分享了使用微信小程序云开发进行数据库操作的经验,包括创建集合、记录数据、查询、更新和删除数据的步骤。强调了在云函数中进行查询以提高效率,并介绍了创建索引来提升查询速度。此外,还展示了如何在实际项目中应用这些技巧,例如在Random电影日历小程序中。
摘要由CSDN通过智能技术生成

最近一直在折腾微信小程序,刚开始是用的python tornado 加上MongoDB自己搭建的后台,做完了一个之后。打算纯粹的使用微信小程序云开发来做一个。这篇文章就是云数据库使用的一些总结。

刚开始看到这个云数据库的时候,第一感觉就是,这不就是MongoDB吗。

这就简单了,毕竟MongoDB我自己瞎玩的时候用的挺多的,撸起袖子就是干。

1. 创建集合

首先开通微信小程序的云开发环境,然后打开云开发控制台,添加集合。因为我做的是记账的微信小程序,所以创建了一个userbills 集合。

2. 记录数据

 
  1. /* mydata ={

  2. money: 88,

  3. date: '2018-12-28',

  4. first_level: '账单的父类别',

  5. child_level: '账单的子类别',

  6. info: '账单的备注信息'

  7. } */

  8. const db = wx.cloud.database();

  9. const collections = db.collection('userbills');

  10. collections.add({

  11. data: {

  12. data: mydata,

  13. time: util.formatTime(new Date())

  14. },

  15. success(result) {

  16. app.globalData.myid = result._id,

  17. app.globalData.mydata = mydata,

  18. console.log('add')

  19. that.postbillsuccess()

  20. }

  21. })

添加之后数据库里的结构是这样的:(_id, _openid字段是默认插入的,openid就是用户的认证信息)

3. 查询

查询推荐在云函数里查询,因为前端写的查询,一次最多只能返回20条数据(当然结合分页来使用还是挺好的)。而在云函数查询数据库,一次最多可以返回100条数据,数据量大的时候可以节省数据库读的次数。

 
  1. const db = cloud.database()

  2. const MAX_LIMIT = 100

  3. const collections = db.collection('usersbill')

  4. const _ = db.command

  5. const wxContext = cloud.getWXContext()

  6. var firstdate = event.firstdate; // 前端调用云函数时传入的时间参数,用来取对应区间里的账单数据

  7. var lastdate = event.lastdate;

  8. const countResult = await collections.where({

  9. _openid: wxContext.OPENID, // 这里需要注意,写数据的时候,会自动为我们添加用户的openid,可是读取的时候,需要自己把这个限制条件加上去。

  10. data: {

  11. date: _.and(_.gte(firstdate), _.lte(lastdate))

  12. }

  13. }).count() // 获取该区间段所有的账单总数

  14. const total = countResult.total

  15. // 计算需分几次取

  16. const batchTimes = Math.ceil(total / 100)

  17. // 承载所有读操作的 promise 的数组

  18. const tasks = []

  19. for (let i = 0; i < batchTimes; i++) {

  20. const promise = collections.where({

  21. _openid: wxContext.OPENID,

  22. data: {

  23. date: _.and(_.gte(firstdate), _.lte(lastdate))

  24. }

  25. }).skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()

  26. tasks.push(promise)

  27. }

  28. // 等待所有

  29. return (await Promise.all(tasks)).reduce((acc, cur) => ({

  30. data: acc.data.concat(cur.data),

  31. errMsg: acc.errMsg,

  32. }))

涉及到数据库和查询,当然要创建索引来增加查询的速度,这个查询一共是根据两个字段的,'_openid' 和 'data.date' 两个字段,所以,我们在索引处添加这两个字段。

 4. 更新字段

更新字段,

 
  1. // myid 是所要更新的数据的 _id

  2. collections.doc(myid).update({

  3. data:{

  4. data: mydata // 更新的字段以及数值

  5. },

  6. success:res=>{

  7. console.log(res)

  8. },fail: err=>{

  9. console.log(err)

  10. }

  11. })

5. 删除数据

删除数据

 
  1. collections.doc(id).remove({

  2. success: function (res) {

  3. console.log(res)

  4. wx.showToast({

  5. title: '删除成功',

  6. icon: 'success',

  7. duration: 2000

  8. })

  9. }

  10. })

我的一个成品微信小程序:

Random电影日历,每天一部电影,还能看天气。

业务搭载离不了云服务器,选择合适的平台最重要!

从目前国内云计算市场的格局来看,国内云计算前三强分别是阿里云、腾讯云和华为云,阿里云、腾讯云作为背靠互联网平台的企业,更偏向于B端用户;华为与作为传统的通信巨头,更偏向于G端。

本人从事云计算相关工作至今已有多年,国内主流的云平台都接触过,包括他们的销售及技术团队,对各家的产品也小有了解,并且指导过数百家企业迁移上云,对云平台选择也有一定的发言权!

网上有很多评测,评测数据也五花八门,说谁好的都有,这个两篇博文分析汇总的非常详细,分享给大家,文档地址:

博文1:云服务器哪家好!阿里云、腾讯云、华为云的服务器配置及价格对比?​

博文2:阿里云服务器突发型t6、n4、s6、c5、c6怎么选?和腾讯云服务器标准型s3、sn3ne、s4、s5、sa2相比哪家好?全面解析

如果是高并发,高IO业务场景,需要确定服务器规格,可让业务应用性能发挥到最佳,参考官方文档:

阿里云服务器规格:规格实例族 - 云服务器 ECS

腾讯云服务器规格:规格实例族 - 云服务器CVM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值