收藏
回答

collection.where.get 里设置setData后,数据未更改

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 工具 wx41258fc17008e248 2.10.1

今天遇到一个查询数据库以后setData不成功的问题。查询完赋值,退出 get({}) 以后再查询数据值又回去了。

但是有一点比较奇怪,console.log() 显示的数据里“汇总信息”与“展开信息”不一致。

代码片段如下:

 data: {
    exRec: true,
    focused: false,
    searched: false,
    inputValue: '',
    list: [],
  },
  .....
recording: function(e) {
    var idx = e.currentTarget.dataset.index;
    var l = this.data.list[idx]
    //记录当前日期
    var mDate = new Date()
    var M = mDate.getMonth()
    var D = mDate.getDate()
    if (M < 10) {
      M = "0" + M
    }
    if (D < 10) {
      D = "0" + D
    }
    //查询今日是否已有记录
    db.collection('resiRecord').where({
      _date: M + "/" + D,
      _name: l._name,
      _addr: l._addr,
      _t1: ''
    }).get({
      success: res => {
        if (res.data.length == 0) {
          this.setData({
            exRec: false,
          })
          console.log(this.data)
        }
      }
    })
    console.log(this.data)
    if (this.data.exRec == false) {
      console.log("执行")
      db.collection("resiRecord").add({
        data: {
          _date: M + "/" + D,
          _t0: mDate.getHours() + ':' + mDate.getMinutes(),
          _name: l._name,
          _tel: l._tel,
          _addr: l._addr,
          _car: l._car,
          _qrt: l._qrt,
          _quarYN: l._quarYN
        }
      })
      complete: () => {
        console.log("finished")
        // wx.navigateTo({
        //   url: '../complement/complement?name=' + l._name + '&tel=' + l._tel + '&addr=' + l._addr + '&car=' + l._car + '&qrtYN=' + l._quarYN + '&qrt=' + l._qrt + '&id=' + l._id
        //})
      }
    } else {
      // wx.navigateTo({
      //   url: '../returner/returner?name=' + l._name + '&tel=' + l._tel + '&addr=' + l._addr + '&car=' + l._car + '&qrtYN=' + l._quarYN + '&qrt=' + l._qrt + '&id=' + l._id
      // })
    }
  },
回答关注问题邀请回答
收藏

2 个回答

  • ᥬ[吃瓜]᭄
    ᥬ[吃瓜]᭄
    2020-02-25

    首先是异步问题,先打印的是118行的,其次console.log 打印 object 或 array 的时候,展开的时候会重新读一次值,如果在打印之后这个值被修改了,就会出现打印时和展开时的值不一样的情况

    2020-02-25
    有用 1
    回复 1
    • 好
      2020-02-25
      明白了,感谢回复!
      2020-02-25
      回复
  • 小肥羊🍊
    小肥羊🍊
    2020-02-25

    setData操作是异步的,建议看看下面代码


    setData({
     openid:xx 
    },()=>{
    console.log(this.data)
    
    })
    
    2020-02-25
    有用
    回复 3
    • Mr.Zhao
      Mr.Zhao
      2020-02-25
      纠正一下,setData 赋值是同步的
      2020-02-25
      2
      回复
    • 小肥羊🍊
      小肥羊🍊
      2020-02-25回复Mr.Zhao
      收到,多谢指正,我具体了解一下
      2020-02-25
      1
      回复
    • 好
      2020-02-25
      感谢回复!
      2020-02-25
      回复
登录 后发表内容
问题标签