小程序云开发学习笔记3

发布于 4 年前作者 lqin2847 次浏览最后编辑 4 年前来自 share

做完了简单的增删改查操作之后,可以更深入地进行查找操作了,熟悉后端的同学都知道,后端80%是增删改查,而增删改查中80%又是查找,所以查找的排序和定量查找是基本功,现在就来实现一下小程序的按价格排序和条件筛选等功能。

首先,先写两个简陋的按钮表示排序吧:

然后就是绑定按钮点击事件orderByAsc()和orderByDesc(),在其中进行排序操作,排序代码如下:

wx.cloud.database.collection("表名")
      .orderBy("排序所根据的字段", "asc") //第二个参数升序是asc,降序是desc
      .get()
      .then(res => {
      })
      .catch(err => {
      })

可以看到排序功能就是在原先的查询功能只上加入了orderBy(),这里需要注意的是,不同于mysql,sql server等数据库语言,微信中的orderBy()是放在查询操作get()前面的,orderBy()放到get()后面会报错。另外,排序的话一般是数字,如果你所要排序的字段是字符串型的数字,是没法进行排序的,需要将该字段类型从”string”变为”number”。

知道佮排序了,那么这么一来,初始无序查询需要一串代码,升降序查询有需要两串代码,难免让人感到冗余,所以,需要精简代码,用if进行条件判断,wxjs也支持语句的直接拼接,使得我们需要写的代码减少很多:

有时候数据没有现在演示地这么少,我们需要进行分页操作,而分页操作的前提就是获取指定条数的数据,这是我们可以在get()之前加limit(),limit括号中的参数表示返回的条数。limit 在小程序端默认及最大上限为 20,在云函数端默认及最大上限为 1000。如果需要数据的起始位置不是第一个,而是要返回地2-5个的数据,可以在limit()后面加上.skip(),skip中的参数表示从第几个开始读。如图:这就返回了第二个到第四个的数据:

最后,还有一种查询就是对数值的区间进行查询,比如查询价格为50-100的书,查询价格大于200的书,和msyql等传统数据库类似,微信小程序也是在原先的.where()里面添加操作,实现条件查询,不过,微信小程序“大于小于”不是用>和<,而是使用了特殊的符号,具体如下:

上图为单条件查询,如果要进行多条件查询,也要用and连接,示例如下:

但这样的话and带来的括号太多了,很容易出错,可以采用以下方法简洁表示与关系:

甚至直接省略and

其他逻辑运算法or,not,nor的用法与and类似,大家可以查询微信开发文档学习:

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/Command.html#Command-and-expressions-any-Command

7 回复
osun
osun1 楼4 年前

不错,学完之后也可以去试试使用另一个文档型数据库MongoDB

leitao
leitao2 楼4 年前

对新手来说写的很友好,感觉很不错,期待你的下篇文章。

taoqian
taoqian3 楼4 年前

笔记做得很详细,很有参考价值,学习了

yang08
yang084 楼4 年前

简洁的and写法get到了

xiulanye
xiulanye5 楼4 年前

感谢分享!共同学习,期待下一篇!

junhe
junhe6 楼4 年前

挺详细的!期待今后更多好文

gangpan
gangpan7 楼4 个月前

社区大佬真多我算是学到了