收藏
回答

如何实现用.where查询进行update?

我有一个集合,集合里有用户的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)
最后一次编辑于  2020-11-11
回答关注问题邀请回答
收藏

2 个回答

  • James¹⁰¹⁴
    James¹⁰¹⁴
    2020-11-11

    是不是openid大小写错了。数据库是openId,代码where里面是openid:xxx

    2020-11-11
    有用
    回复 8
    • 李小虎
      李小虎
      2020-11-11
      尝试改成openId:wxContext.openId,依然无效,也没报错
      2020-11-11
      回复
    • James¹⁰¹⁴
      James¹⁰¹⁴
      2020-11-11回复李小虎
      把wxContext输出来看看,OPENID会不会数据库没有的。
      2020-11-11
      回复
    • 李小虎
      李小虎
      2020-11-11
      输出来有openid
      2020-11-11
      回复
    • 李小虎
      李小虎
      2020-11-11
      或者这个有没有其他写法呀?用户自己update某个集合里自己的数据。
      2020-11-11
      回复
    • James¹⁰¹⁴
      James¹⁰¹⁴
      2020-11-11回复李小虎
      不要用云函数,在小程序端调用试试,不用写where。
      2020-11-11
      回复
    查看更多(3)
  • 李小虎
    李小虎
    2020-11-10
    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
      }
    }
    //补充一下代码的文本
    
    2020-11-10
    有用
    回复
登录 后发表内容
问题标签