最开始的代码
- 一开始想使用 或 条件来查询数据库,照着官方文档的示例使用了 _.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 。 - 但如果不用查询指令,就不需要定义。 给大家附上官方文档链接,开发微信小程序,官方文档是要仔细阅读的!!!查询指令
身为小白,最近在做微信小程序,遇到的坑正好可以整理一波,权当微信小程序填坑之旅。