收藏
回答

云开发where模糊查询怎么使用普通正则?

官方说一般情况下用这个原生的正则去匹配,可是具体要怎么用呢?比如我数据库user表有两条数据,一条{name:''刘德华''},一条是{name:"张学友}我现在想通过一个“刘”字来找到其中一条数据,要怎么写呢?求大神告知!

回答关注问题邀请回答
收藏

2 个回答

  • 水滴  纸条
    水滴 纸条
    11-16

    感谢大佬指引,现问题已解决,把成果贴出来。问题的起源是我想封装一个通用的模糊查询云函数,通过官方文档发现可以new一个正则,但是文档上面写的很清楚,除非迫不得已,不然还是用原生的,并且new的正则传东西好像也不好传。所以打算用这种方式 where({name:/刘/}),但是这个对象{name:/刘/}在传递过程中,到了云函数端就变成了{name:{}}这样的空的对象。既然正则不好传递,那么就云端生成,所以最后的根本问题是正则的拼接,通过查询,得知这样一个函数 eval(),问题就迎刃而解了!如图!

    11-16
    有用 1
    回复
  • garField
    garField
    11-14
    // 数据库正则对象
    db.collection('todos').where({
      name: db.RegExp({
        regexp: '刘'
      })
    })
    // 原生Javascript对象
    db.collection('todos').where({
      name: /刘/
    })
    
    11-14
    有用
    回复 5
    • 水滴  纸条
      水滴 纸条
      发表于移动端
      11-14
      您好,谢谢回答!这个方法无可厚非,但是,我想问的是官方说的那种原生的写法,如图示那种。
      11-14
      回复
    • garField
      garField
      11-14回复水滴 纸条
      更新了
      11-14
      回复
    • 水滴  纸条
      水滴 纸条
      11-15回复garField
      好的,看到了,这个本地查询是可以的,但是我想封装成一个通用的模糊查询云函数,大佬能再帮我看看吗?不胜感激!
      如下两图,一个是本地代码,一个是云函数端,searchObj传上去在云函数端打印出来是一个这样的 searchObj:{nickName:{}},里面是空的,查询到的结果是所有,这个有什么办法不?
      11-15
      回复
    • garField
      garField
      11-15回复水滴 纸条
      你应该在云端创建regex对象,然后放到where 中
      11-15
      回复
    • 水滴  纸条
      水滴 纸条
      11-16
      谢谢!按您的思路,问题解决了!
      11-16
      回复
登录 后发表内容
问题标签