我有一个集合,集合里有用户的openid和一些自定义字段,想通过where查询到用户自己openid的记录,然后update里面的某个字段,有检查过云数据库权限,是所有用户可读,仅创建者可读写
更新一下,需求层面已经解决,在小程序里用doc和updata组合,并且实现了循环自增,谢谢2楼同学给的思路,但是还是没法解释为什么.where和updata组合不能更新。
下面是我解决需求的方法
setInterval(function () {
wx.cloud.callFunction({
name:"getOpenid",
success(res){
let openId = res.result.openid
db.collection("userlist").where({
openId: openId,
}).get({success:res=>{
let b=res.data[0].yinliang
let c=res.data[0].bingli
let id=res.data[0]._id
// console.log(id)
// console.log(res)
var a=b+c;
const _ = db.command
db.collection("userlist").doc(id)
.update({
data:{
wuzi :_.inc(a)
}
})
that.setData({
block:res.data[0],
})
}})
}
})
//循环执行代码
}, 5000)
是不是openid大小写错了。数据库是openId,代码where里面是openid:xxx
const cloud = require('wx-server-sdk') cloud.init({ env: "test-0gox2qr9e583e156", traceUser:true }) const db = cloud.database() const _ = db.command exports.main = async (event, context) => { const wxContext = cloud.getWXContext() try { return await db.collection('userlist') // .where({ // openid:wxContext.openId, // }) // .doc("13c6ced75faa65f400128aed090edcc7") .update({ data:{ wuzi:202 } }) } catch (error) { console.error(error) } return { data:event } } //补充一下代码的文本