写在前面
做小程序的开发已经有很长一段时间了,虽然是在写,但是一直没有去沉淀过,没有去记录过踩过的坑,这篇博客作为一个导航,记录一下我所遇到的坑(主要还是云函数的数据库查询)
随着不断的更新,小程序的功能也是越来越完善,想当初,刚玩小程序云开发的时候,云开发提供的一个查询环境还不支持$(Aggregate)
、_(Command)
,以及高级的查询方法例如lookup
,在现在也是都被修复了。。
写这么一系列博客,也有一个原因,刚玩微信云开发的时候看小程序云开发的文档解释的超级晕的。。。你看那个Aggregate聚合...一时间无法理解....(虽然后来看就好多了)
咳,闲扯就这么多,本文章假定你已经能够搭建一个云函数、并且跑过一遍完全没有问题(一般来说不会有问题的,创建的时候模板里的把该配置的变量都配置了...)
...理论上可以在微信小程序的代码里直接写查询....小程序貌似默认有这些方法的(具体还没尝试,如果可以,未来ts分层的时候,dao层就可以直接放查询了2333)
然后...关于小程序的版本更新,当时做了一次代码重构,Node版本是8.9,后来因为外部需要云开发的数据,又新写了一组方法,node版本10.15。两次的版本差距还是蛮大的(还是因为两次用的查询不一样...具体未来说明)
正文
在了解高级查询之前,我基本上都是靠多次查询,大部分业务的处理都在
Service
层中处理的,我开始涉及高级查询的契机是在一个业务的需求,要获取一个时间范围内的数据,而我存储的时间格式是YYYY-mm-dd
,这意味着只有两种方式完成查询,一种是正则匹配,匹配年月(2020-07
),或者是对查询的数据进行预处理,转换成另一种有规律的格式,来实现复杂的查询,这个方式会在后面说起。
对于基本的内容,我抽象出了一套方法,可以适用于大部分的增删改,非常方便(有点类似于mybatis
提供的一套基本的查询方案,不过没有jpa辣么智能)
- 云开发数据库的基本查询(使用云函数演示)
- 云开发数据库的高级查询(使用云函数演示)
- 云开发使用nodejs(不做具体介绍,只说有这么个东西,细心的你大概已经发现了,包括云函数的查询操作都是引用一个微信的sdk(
wx-server-sdk
)完成的)