不知道为什么,使用云开发的数据库where语句查询数据,无法正确返回?
发布于 7 年前 作者 qiang88 9517 次浏览 来自 问答

在下在做一个很简单的东西,需要用名字在数据库中查询,但是无法动态的得到名字,已经试过了如果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 回复

这代码,看得头疼

使用wx.getStorageSync

js的语法写错了。

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

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

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

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

回到顶部