收藏
回答

get数据库的数据后可以直接吗,就是直接赋值而不用this.setData?

比如遮掩直接赋值给a后直接用,, let a=DB.where({ x1y1: x1y1 }).get().res.data.length,因为如果用this。setData要直接点击事件后获得数据库的信息,再在同一个点击事件里面用直接用get得到的数据的话,要点击两次才能用,所以可以直接将get到的数据赋值后直接用吗??

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

1 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2020-04-21

    谢邀

    用点2次吗
    座位表
    id    x    y    state
    1     1    1      0
    2     1    2      1
    ​
    进入选座页面时,读取所有座位数据,展示在页面上
    [座位1(id:1)]  [座位2(id:2)]
    用户1点击座位1时,查询座位1状态
    select: async function(e){
      var t = this, ds = e.currentTarget.dataset, id = ds.id || 0
      var chk = await db.collection('xxx').doc(id).get()
      if(chk.data && chk.data.id){
          if(chk.data.state == 1){
            return wx.showToast({title: '该座位已被选', icon: 'none'})
          }else{
            await db.collection('xxx').doc(1).update({data:{state:1}})
            return wx.showToast({title: '选座成功', icon: 'none'})
          }
      }else{
          return wx.showToast({title: '该座位不存在', icon: 'none'})
      }
    }
    

    若认为该回答有用,给回答者一个[ 有用 ]吧!!

    2020-04-21
    有用 2
    回复 8
    • ck
      ck
      2020-04-21
      就是我做一个图书馆座位预约的小程序,当不同用户几乎同时进入同一个页面选着同一个座位时,这时候就要判断谁先选着了座位,后选座位的人提示位置被选了。我是这样判断的:当前一个人选择了座位就将座位信息存入数据库,这时候虽然其他同时进入同一页面用户的页面还没刷新但是有些位置已经是被选择的了,即数据库已经有了座位被选的信息,   当另一用户也点击同一座位时,先获取点击的座位信息x1y1,在用DB.where(x1y1,x1y1)查看数据库是否已经有相同的数据了,即得到的length为1,如果有的话就判断为该座位别选择了!因为DB.where(x1y1,x1y1).get是异步的,点击第一次的时候得到length先存入data里面,再点击一次时用this.data.length获取到length的信息,才能进行判断。
      2020-04-21
      回复
    • ck
      ck
      2020-04-21
      或者有没有什么方法时数据库的数据唯一性?当数据库有对应的座位信息时,就实现向数据库添加数据失败?
      2020-04-21
      1
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2020-04-21回复ck
      2020-04-21
      1
      回复
    • ck
      ck
      2020-04-21
      var chk = await db.collection('xxx').doc(id).get()这里是可以做直接得到get到数据库的值在直接赋值给chk吗?如果能得到数据库的值就直接用的话就不需要点击两次了
      2020-04-21
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2020-04-21回复ck
      能呀怎么不能,你该去了解async / await
      2020-04-21
      1
      回复
    查看更多(3)
登录 后发表内容
问题标签