execution 指定多个方法_小程序之二十三 数据库之4,Where方法

2020年10月29-30日,上周,参加了金科创新社主办的“智变科技”论坛,会议组织者辛苦!下图是部分参会者合影。

b55eb75a0ff527e0714b10451a06ad96.png

本人在此次论坛上,应邀演讲了“产品思维驱动数字化转型”,讲的如何不知道,演得还可以,从掌声上听,也还可以!

我的ppt,原创的,目录和部分截图如下,感兴趣的,可索取,感谢金科创新社做了UI,高大上了很多。

98c74c78ac536ffbcbaf58f6aa2d291d.png

3b6ef7f780046a50598fad6a5952738f.png

开始,继续我的小程序之旅!数据库到本节就结束了,本节也是重头戏了,会SQL 的,就知道WHERE的重量了。

本节较多滴整合、采纳(照搬)了微信开发者文档内容,通过整合,把where这个事儿说清楚了,但又出来一个command,这个回头再说,先知道where怎么用,先不管那么多。

在小程序之二十 数据库之2基本逻辑和查询操作中,有这样的话,“一个数据库可以有多个集合,集合可看做一个 JSON 数组,数组中的每个对象就是一条记录,记录的格式是 JSON 对象。这个话很重要,查询成功后,回调函数得到结果是满足条件的对应记录的对象数组”。本节说的是如何得到多条记录,也就是对应SQL里面的where语句。通过调用集合上的 where 方法可以指定查询条件,再调用 get 方法即可返回满足指定查询条件的记录,例如:

db.collection('todos').where({
_openid: 'user-open-id',
done: false
})
.get({
success: function(res) {
// res.data 是包含以上定义的两条记录的数组
console.log(res.data)
}
})

where 方法接收一个对象参数,该对象中每个字段和它的值构成一个需满足的匹配条件,各个字段间的关系是 "与" 的关系,即需同时满足这些匹配条件,在这个例子中,就是查询出 todos 集合中 _openid 等于 user-open-id 且 done 等于 false 的记录。在查询条件中我们也可以指定匹配一个嵌套字段的值,比如找出自己的标为黄色的待办事项:

db.collection('todos').where({
_openid: 'user-open-id',
style: {
color: 'yellow'
}
})
.get({
success: function(res) {
console.log(res.data)
}
})

也可以用 "点表示法" 表示嵌套的字段:

db.collection('todos').where({
_openid: 'user-open-id',
'style.color': 'yellow'
})
.get({
success: function(res) {
console.log(res.data)
}
})

如果不是“等”呢?假设我们查询进度大于 50% 的待办事项,那么表示全等匹配的传入对象参数方式就不行了,这时需要用到查询指令。

数据库 API 提供了大于、小于等多种查询指令,这些指令暴露在 db.command 对象上。比如查询进度大于 50% 的待办事项:

//这是一个小的框架了,按照它的样子写吧,没啥道理可言的

const db =  wx.cloud.database();

const _ = db.command ;//注意这条语句

db.collection('todos').where({
// gt 方法用于指定一个 "大于" 条件,此处 _.gt(30) 是一个 "大于 50" 的条件
progress: _.gt(50)
})
.get({
success: function(res) {
console.log(res.data)
}
})

API 提供了以下查询指令:

查询指令说明
eq

等于

neq

不等于

lt

小于

lte

小于或等于

gt大于
gte大于或等于
in字段值在给定数组中
nin字段值不在给定数组中

逻辑指令

除了指定一个字段满足一个条件之外,我们还可以通过指定一个字段需同时满足多个条件,比如用 and 逻辑指令查询进度在 30% 和 70% 之间的待办事项:

const _ _.gt.and(_.lt(

既然有 and,当然也有 or 了,比如查询进度为 0 或 100 的待办事项:

const _ _.eq(0).or(_.eq(100))

如果需要跨字段进行 "或" 操作,可以做到吗?答案是肯定的,or 指令还可以用来接受多个(可以多于两个)查询条件,表示需满足多个查询条件中的任意一个,比如我们查询进度小于或等于 50% 或颜色为白色或黄色的待办事项:

const _ = db.command
db.collection('todos').where(_.or([
{
progress: _.lte(50)
},
{
style: {
color: _.in(['white', 'yellow'])
}
}
]))
.get({
success: function(res) {
console.log(res.data)
}
})

具体的逻辑查询指令 API 文档可参考数据库 Command API 文档。

哈哈,最后,加播一个朋友发的朋友圈图片,有意思:

db3c8830084593d76d51c5bfe9896542.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值