云函数数据更新的问题?
发布于 6 年前 作者 oqiu 12506 次浏览 来自 问答

通过点击张三或李四,触发绑定函数,绑定函数中调用了数据库更新的云函数,在该云函数中将数据库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)

    }

}

1 回复

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

回到顶部