微信小程序·云开发 云数据库的使用教程
最近一直在折腾微信小程序,刚开始是用的python tornado 加上MongoDB自己搭建的后台,做完了一个之后。打算纯粹的使用微信小程序云开发来做一个。这篇文章就是云数据库使用的一些总结。
刚开始看到这个云数据库的时候,第一感觉就是,这不就是MongoDB吗。
这就简单了,毕竟MongoDB我自己瞎玩的时候用的挺多的,撸起袖子就是干。
1. 创建集合
首先开通微信小程序的云开发环境,然后打开云开发控制台,添加集合。因为我做的是记账的微信小程序,所以创建了一个userbills 集合。
2. 记录数据
/* mydata ={
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 = mydata,
console.log('add')
that.postbillsuccess()
}
})
添加之后数据库里的结构是这样的:(_id, _openid字段是默认插入的,openid就是用户的认证信息)
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,
}))
涉及到数据库和查询,当然要创建索引来增加查询的速度,这个查询一共是根据两个字段的,'_openid' 和 'data.date' 两个字段,所以,我们在索引处添加这两个字段。
4. 更新字段
更新字段,
// myid 是所要更新的数据的 _id
collections.doc(myid).update({
data:{
data: mydata // 更新的字段以及数值
},
success:res=>{
console.log(res)
},fail: err=>{
console.log(err)
}
})
5. 删除数据
删除数据
collections.doc(id).remove({
success: function (res) {
console.log(res)
wx.showToast({
title: '删除成功',
icon: 'success',
duration: 2000
})
}
})
我的一个成品微信小程序:
Random电影日历,每天一部电影,还能看天气。
云服务器搭载业务,选择合适的平台最重要!
从目前国内云计算市场的格局来看,国内云计算前三强分别是阿里云、腾讯云和华为云,阿里云、腾讯云作为背靠互联网平台的企业,更偏向于B端用户;华为与作为传统的通信巨头,更偏向于G端。
当然如何选择服务器机型,这里有篇文档汇总的比较详细,文档地址:
云服务器哪家好!2021年阿里云、腾讯云、华为云的服务器配置及价格对比?
如果是高并发,高IO业务场景,需要确定服务器规格,可让业务应用性能发挥到最佳,参考官方文档:
阿里云服务器规格:规格实例族 - 云服务器 ECS
腾讯云服务器规格:规格实例族 - 云服务器CVM
微信小程序·云开发 云数据库的使用教程相关推荐
- 微信小程序6-云开发-云数据库
微信小程序1-小程序基础,开发工具安装使用 微信小程序2-WXSS,WXS 微信小程序3-小程序生命周期和组件 微信小程序4-小程序的api 微信小程序5-真机测试 1.云开发 1).什么是云开发 微 ...
- 【微信小程序-原生开发+云开发+TDesign】修改用户头像(含wx.chooseMedia,wx.cloud.uploadFile,wx.cloud.deleteFile的使用)
效果预览 核心技术(含业务逻辑) 选择新头像(本地图片) 使用 wx.chooseMedia 选择本地图片,官网见 https://developers.weixin.qq.com/miniprogr ...
- 【微信小程序-原生开发】实用教程08 - 开通微信云开发,操作云数据库新增数据(含修改数据权限),初始化云服务(含获取微信云环境 id),获取云数据,滚动公告栏
开始前,请先完成圆梦宝典中宫格导航的开发,详见 [微信小程序-原生开发]实用教程 07 - Grid 宫格导航,详情页,侧边导航(含自定义页面顶部导航文字) https://blog.csdn.net ...
- 微信小程序:uni-app云开发的网盘助手
这是一款uni-app开发的一款网盘小助手小程序源码 该源码主要用于用户输入关键词然后全网抓取百度网盘资源内容 另外呢该小程序还可以免费领取百度网盘七天会员,所以用来引流特别的不错 该小程序还有外卖系 ...
- 【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)
开始前,请先完成圆梦宝典中滚动公告栏的开发,详见 [微信小程序-原生开发]实用教程 08 - 开通微信云开发,操作云数据库新增数据(含修改数据权限),初始化云服务(含获取微信云环境 id),获取云数据 ...
- 微信小程序——传统开发模式与云开发模式对比
目 录 1.传统开发模式与云开发模式的对比图 2.云开发技术能力说明 3.云开发技术特点 1.传统开发模式与云开发模式的对比图 通过传统开发模式与云开发模式的对比图可以看出传统开发模式需要开发者关注 ...
- 微信小程序使用阿里云物联网API开发物联网应用
微信小程序是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下就可以打开的应用. 微信小程序具有方便快捷,速度快,安全及保密性高的优点,同时开发 ...
- 微信小程序中配置云开发
微信小程序中配置云开发 一.配置 app.js 文件 onLaunch() {wx.cloud.init({env: 'cloud1-xxxxxxxxxx', // 云开发 环境IDtraceUser ...
- 微信小程序:(更新)云开发微群人脉
大家好,今天给大家带来的这一款是经过优化更新并有所改动的一个版本 我们之前也发布过一款,今天这一款是在之前的哪一款的基础下增加优化 该小程序的群码都是系统自动采集的,所以没有上线但是没有群的烦恼 另外 ...
- 仿京细菜谱微信小程序源码 云开发菜谱微信小程序源码
京细菜谱是一个美食分享网站,提供优质的家常菜谱大全,仿京细菜谱小程序源码为喜欢美食的朋友提供了很多的美食烹饪教程 让您轻松学会做美食.对不同食材和地域的饮食做了不同的分类和详细的做菜方法 分类十分详细 ...
最新文章
- 三剑客”之Swarm应用数据持久化管理(volume 、bind 、 nfs)
- img下面的png图片 vs 读不出来_VUX中XImg组件加载图片不正确,BusPlugin不好使,求解...
- 一个假设:如果两个量互为分类对象和分类载体则他们不可对易
- 慢查询日志中出现超大时间的案例分析
- MyBatis 源码解读-objectFactoryElement()、objectWrapperFactoryElement()
- Winfrom实现圆角设计
- LeetCode 1630. 等差子数组
- nchw_to_nhwc=True
- python安装后如何使用-python如何安装下载后的模块
- An Underwater Image Enhancement Benchmark Dataset and Beyong
- Zookeeper的Paxos分布式一致性算法-类比
- 载誉而归!昂视荣膺CAIMRS 2023「自动化创新奖」
- 如何知道国外流行哪款 App (榜单)
- ubuntu双系统时间同步_解决Windows与Ubuntu双系统时间同步问题
- 基于SSM的电影票预订系统 JAVA MYSQL
- [AT89C51 ]用汇编语言实现流水灯仿真(含keil与Proteus)
- 转载:SAP 标准教材和自学方法
- 公务员考试——申论1
- python 人脸替换_萌新如何用Python实现人脸替换?
- nvme sanitize
热门文章
- 好工具推荐系列:跨平台安卓实时投屏软件QtScrcpy
- 商业大亨微信草花服务器,4399《商业大亨》跨服争夺,寸土寸金
- CUDA Samples 之 Simulations 之 Particles (1)
- APS跟踪和提高生产效率的五种方法
- 单片机FLASH操作
- 东方瑞丰:飞行模拟机才是虚拟现实桂冠上的明珠
- 用python根据生日判断星座_python的生肖和星座计算函数
- 这样的用户体验,是设计错误,还是我孤陋寡闻,问问中行?
- gem install gollum
- keil c语言pdf,Keil软件“C语言”与“汇编”混编 —— 相关知识整理.pdf