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