收藏
回答

云函数数据更新的问题?

通过点击张三或李四,触发绑定函数,绑定函数中调用了数据库更新的云函数,在该云函数中将数据库users表相应的记录字段选中状态进行更新,现在有个现象,就是在点击前,数据库中张三的选中状态为未选中,点击一下张三,预期数据库中选中状态为选中,但数据库中数据未更新,再次点击张三,通过打印信息观察到数据仍未更新,当点击第三次的时候,数据库中的数据进行了更新,想请教各位大神,这种情况是怎么回事?就是点击每个item3次数据库的数据才会更新

下面是代码:

index.js

soft_restatus:function(e){

    //切换选中状态

    var item = this.data.soft_js[e.currentTarget.dataset.index]

    //console.log(item)

    item.completed = !item.completed //数据库中对该数据进行更新

    var leftCount = this.data.leftCount + (item.completed ? -1 : 1)

    //调用云函数

    var that = this;

    //getID

    wx.cloud.callFunction({

      name:'getid',

      data:{

        name:item.name

      },

      success:function(res){

        //获取_id

      that.setData({_id:res.result.data[0]._id}

       console.log('getid_print')

       console.log(res.result.data[0]._id)

      },

      fail:console.log,

      complete:res=>{

        console.log(res)

      }

    })

    wx.cloud.callFunction({

      name:'update',

      data:{

        _id:that.data._id,

        completed:item.completed,

      },

      success:function(res){

        console.log('update_print')

        console.log(that.data._id)

        console.log(res.result.stats)

      },

      fail:console.log

    })

    this.setData({soft_js:this.data.soft_js,leftCount:leftCount})

  },

云函数代码:getid

exports.main = async (event, context) => {

  //return new Promise((resolve, reject) => {

      try{

      return  await db.collection('users').where ({

          name:event.name

        }).get({

          success:function(res){

            return res

          }

        })

      }catch(e)

      {

        console.log(e)

      }

}

云函数:update

exports.main = async (event, context) => {

 // return new Promise((resolve, reject) => {

    try{

    return  await db.collection('users').doc(event._id).update ({

        data:{

        // name:event.name,

          completed:event.completed,

        // _openid:event._openid

        }

      })

    }catch(e)

    {

      console.log(e)

    }

}


最后一次编辑于  2020-02-04
回答关注问题邀请回答
收藏

1 个回答

  • Mr.Zhao
    Mr.Zhao
    2020-02-04

    你让大家猜啊,你代码怎么写的,亮出来。你这么说,谁知道

    2020-02-04
    有用
    回复 5
    • Mr_Chù
      Mr_Chù
      2020-02-04
      不好意思,已经粘出代码了
      2020-02-04
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-02-04回复Mr_Chù
      典型的异步问题。你把更新的代码,写到获取信息回调里面就行了
      2020-02-04
      1
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-02-04回复Mr_Chù
      2020-02-04
      1
      回复
    • Mr_Chù
      Mr_Chù
      2020-02-04回复Mr.Zhao
      我大概明白您的意思了,就是把index.js里的调用更新的云函数写在调用获取云函数的success里,是这样吗
      2020-02-04
      回复
    • Mr_Chù
      Mr_Chù
      2020-02-04回复Mr.Zhao
      谢谢您,已经解决了。
      2020-02-04
      回复
登录 后发表内容
问题标签