收藏
回答

云数据库的where语句无法筛选数据?

数据集合'zhongdui'包含一个记录M,M字段的_openid非空

console.log(this.data.openid)

var rr =await db.collection('zhongdui').where({

_openid:this.data.openid

}).get()

console.log(rr)

//运行后发现this.data.openid为任意值rr都能取到M



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

3 个回答

  • 121
    121
    2019-10-31

    你把集合权限改一下就好了,之前我也踩过这个坑...当权限为“仅创建者可读写”的时候,它好像会默认返回与你_openid相关联的文档

    2019-10-31
    有用 1
    回复 13
    • z
      z
      2019-11-01
      权限改成了:所有用户可读,仅创建者读写
          var rr =await db.collection('zhongdui').where({
            _openid: this.data.openid.toString()
          }).get()
          console.log(rr)
      运行以后变成rr获取不到数据
      2019-11-01
      回复
    • 121
      121
      2019-11-01回复z
      this.data.openid这个值是什么样的?
      2019-11-01
      回复
    • z
      z
      2019-11-01回复121
      页面启动参数是openid= 16e7j5BGyd50d7SI0ZV8pVNGdw50
        onLoad: async function (options) {
          this.data.openid = options.openid
      2019-11-01
      回复
    • 121
      121
      2019-11-01回复z
      数据库里有当前_openid的文档吗?
      2019-11-01
      回复
    • z
      z
      2019-11-01
      有的,主要是我如何模拟其他用户的openid来操作云数据库,因为我发现调试中生成的数据都是一个openid,所以用控制台修改了几条openid值,似乎不起作用诶
      2019-11-01
      回复
    查看更多(8)
  • 吃包子不吐包子皮
    吃包子不吐包子皮
    2019-10-31

    集合权限是 创建者和管理员可读吗,  M 的openid 是不是 当前登录帐号的openid

    2019-10-31
    有用 1
    回复 5
    • z
      z
      2019-11-01
      权限改成了:所有用户可读,仅创建者读写
          var rr =await db.collection('zhongdui').where({
            _openid: this.data.openid.toString()
          }).get()
          console.log(rr)
      运行以后变成rr获取不到数据
      2019-11-01
      回复
    • 吃包子不吐包子皮
      吃包子不吐包子皮
      2019-11-01回复z
      数据库里 有 _openid 为 this.data.openid.toString() 的数据吗
      2019-11-01
      回复
    • z
      z
      2019-11-01回复吃包子不吐包子皮
      _openid: this.data.openid.toString()
      和_openid: this.data.openid结果都一样
      2019-11-01
      回复
    • z
      z
      2019-11-02回复z
      大神我使用云函数获取openid,但是失败了,this.data.openid的值打印不出来
        onLoad: async function (options) {
          await wx.cloud.callFunction({
            name: 'login',
            complete: res => this.data.openid = res.result.openid
            })
          console.log(this.data.openid)
      2019-11-02
      回复
    • z
      z
      2019-11-02
      发现一个线索,云开发控制台用户访问列表的记录显示不出用户昵称和头像,而之前能获取openid的时候可以
      2019-11-02
      回复
  • move
    move
    2019-10-31

    建议看看 数据库的权限设置

    2019-10-31
    有用 1
    回复 14
    • z
      z
      2019-11-01
      权限改成了:所有用户可读,仅创建者读写
          var rr =await db.collection('zhongdui').where({
            _openid: this.data.openid.toString()
          }).get()
          console.log(rr)
      运行以后变成rr获取不到数据
      2019-11-01
      回复
    • move
      move
      2019-11-01
      你这是异步的,不是同步的,会先执行
      console.log(rr);
      2019-11-01
      回复
    • move
      move
      2019-11-01
      db.collection('zhongdui').where({
            _openid: this.data.openid.toString()
          }).get().then(res=>{
              console.log(res.data);
      })
      2019-11-01
      回复
    • z
      z
      2019-11-01
      console.log(res.data)输出了[]
      2019-11-01
      回复
    • move
      move
      2019-11-01回复z
      那就是你的 this.data.openid.toString() 有问题;
      2019-11-01
      回复
    查看更多(9)
登录 后发表内容
问题标签