微信小程序云函数中查询数据库时使用_.or时报错

最开始的代码

  • 一开始想使用 条件来查询数据库,照着官方文档的示例使用了 _.or,可是一直出现报错。
    报错内容如下:
    在这里插入图片描述
  • 下面是最开始的问题代码:
const cloud = require('wx-server-sdk')//默认语句
cloud.init({
  env: "   " //这里是云环境
})
// 云函数入口函数
exports.main = (event, context) => { 
  var Openid = cloud.getWXContext().OPENID // 这里获取到的 openId 是可信的
  return cloud.database().collection("list").where(_.or([
    {
      'passengerInfo.Openid': Openid
    },
    {
      creatorOpenid: Openid
    }
  ])).get()
}

解决后的代码

const cloud = require('wx-server-sdk')//默认语句
cloud.init({
  env: ""  //这里是云环境
}) //默认语句
const db = cloud.database() 
const _ = db.command 
 // 问题关键所在,要想使用查询指令,
//如大于(_.gt)、小于(_.lt)、与操作(_.or)等等,都必须加上这句话。
//按官方文档的话来说,这些指令都暴露在 db.command 对象上!
//按个人理解,也就是要定义 _ 这个符号,不然会报错未定义!

exports.main = (event, context) => { 
  var Openid = cloud.getWXContext().OPENID // 这里获取到的 openId 是可信的
  return db.collection("list").where(_.or([     //list为数据库表
    {
      'passengerInfo.Openid': Openid
    },
    {
      creatorOpenid: Openid
    }
  ])).get()
}

总结

  • 出现问题之后,没有仔细看官方文档。
    问题关键在于const _ = db.command,要想使用查询指令,如大于(gt)、小于(lt)、与操作(or)等等,都必须加上这句话。按官方文档的话来说,这些指令都要暴露在 db.command 对象上!!!
  • 按个人理解,也就是要定义 _ 这个符号,不然会报错未定义!报错内容的第二行内容也是这个意思。_(下划线)这个符号,作为变量不太习惯,可以自定义变量名,如 const command = db.command,对应的条件写成**command.gt( )**等
  • 最开始的代码,直接return cloud.database(), 应该先写
    const db = cloud.database() ,const _ = db.command ,再return 。
  • 但如果不用查询指令,就不需要定义。 给大家附上官方文档链接,开发微信小程序,官方文档是要仔细阅读的!!!查询指令

身为小白,最近在做微信小程序,遇到的坑正好可以整理一波,权当微信小程序填坑之旅。

微信小程序函数,_.or 和 _.in 都是常用的数据库查询操作符,不同之处在于它们的运行逻辑和使用方式有所不同。 1. _.or _.or 是一个逻辑运算符,它的作用是将多个查询条件合并为一个并集。在实际使用,我们可以使用 _.or 将多个查询条件传递给数据库,从而根据多个条件查询数据。 例如,我们要查询一个集合所有满足条件 A 或条件 B 的文档,可以使用以下代码: ``` const db = wx.cloud.database() const _ = db.command db.collection('collection-name').where(_.or([ { conditionA: true }, { conditionB: true } ])).get({ success: res => { console.log(res.data) } }) ``` 2. _.in _.in 是另一个常用的查询操作符,它的作用是查询一个字段的值是否在给定的数组。在实际使用,我们可以使用 _.in 查询一个集合符合条件的文档。 例如,我们要查询一个集合所有满足条件为字段 field 值在数组 [1, 2, 3] 的文档,可以使用以下代码: ``` const db = wx.cloud.database() const _ = db.command db.collection('collection-name').where({ field: _.in([1, 2, 3]) }).get({ success: res => { console.log(res.data) } }) ``` 需要注意的是,_.in 条件只能用于数组类型的字段,如果使用在非数组类型的字段上会抛出异常。 总的来说,_.or 和 _.in 都是常用的数据库查询操作符,它们能够帮助我们快速查询符合条件的文档。不同之处在于,_.or 能够合并多个查询条件,而 _.in 只能用于数组类型的字段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值