收藏
回答

不知道为什么,使用云开发的数据库where语句查询数据,无法正确返回?

在下在做一个很简单的东西,需要用名字在数据库中查询,但是无法动态的得到名字,已经试过了如果where语句中改为receive_user:'我想要查询的名字'就可以正确返回数据,但是按如下来写就无法正确返回数据。



// pages/myMessage/myMessage.js

constdbwxclouddatabase()

constuserdbcollectionuser

constmessagedbcollectionmessage

Page


  /**

   * 页面的初始数据

   */

  data

    name''

    messageList[]

    nameNumnull

    OPENDIDnull

  },

  //调取云函数获取用户opendId,用于判断信息来源

  getOpendId(){


  },


  /**

   * 生命周期函数--监听页面加载

   */

  onLoadfunctionoptions

    letthatthis

    varname''

    wxgetStorage

      keyuserName

      successres

       thatsetData

         nameresdata

       

      

    

    dbcollectionmessagewhere

      receive_userthisdataname

    get

      successfunctionres

        thatsetData

        messageListresdata

            

        consolelogcaocaocaocaothisdataname

     

    

  },


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

3 个回答

  • abc
    abc
    2019-12-18

    在一个函数(比如本例中的onLoad中),如果分为几个函数块,每块执行要花的时间都比较长,这样的话可能不会从头执行到尾,可能会同时开始执行几个函数块。

    比如在执行wx.getstorage的同时也开始执行db.collection().where().get()了,这样where里的this.data.name还是空的,所以无法查到


    上面只是一种推测,还有一种可能就是wx.getstorage没有get到


    也不一定只有这两种可能,也可能是其他情况。不过你可以试试

    2019-12-18
    赞同 1
    回复 9
    • 上官狗剩
      上官狗剩
      2019-12-18
      那老哥如果是过长的原因,那么该如何去解决
      2019-12-18
      回复
    • abc
      abc
      2019-12-18回复上官狗剩
      你的函数因为没有括号,所以不太清楚逻辑。或许可以把db.collection放在wx.Getstorage的success回调里
      2019-12-18
      回复
    • 上官狗剩
      上官狗剩
      2019-12-18
      应该不是getstorage的问题,因为在控制台的appdata中已经正确返回name的值了
      2019-12-18
      回复
    • abc
      abc
      2019-12-18回复上官狗剩
      但是有可能是先查数据库再获得name值。这样查库的时候name还是空
      2019-12-18
      回复
    • 上官狗剩
      上官狗剩
      2019-12-18
      我从新在页面上注册了一个刷新的按钮,逻辑就是之前写在onload里的逻辑,但是还是不行
      2019-12-18
      回复
    查看更多(4)
  • 老张
    老张
    2019-12-19

    js的语法写错了。

    2019-12-19
    赞同
    回复
  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2019-12-19

    这代码,看得头疼

    使用wx.getStorageSync

    2019-12-19
    赞同
    回复
登录 后发表内容
问题标签