微信小程序update/remove成功但是updated/removed为0

注:以下分析removed同理

  • 我的需求:更新数据
  • 代码及错误分析
update:function(){
    db.collection('foods').doc('17453ede609bcedd09418b940de0d831').update({
      data:{
        price:10
      }
    })
    .then(res=>{
      console.log('修改成功',res)
    })
    .catch(err=>{
      console.error('修改失败',err)
    })

控制台显示
在这里插入图片描述

控制台显示修改成功,可是updated:0,更新的记录为0
观察下我数据库集合foods的记录
在这里插入图片描述
在这里插入图片描述

我发现在小程序前端通过add()增加的记录有一个 _openid
而我直接通过云开发控制台添加的记录没有_openid

我猜想可以是权限的问题,我看了下我设置的权限
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021051221141259.png

猜想:那很可能是香蕉那条记录,没有 _openid,说明非用户添加的记录,那前端用户修改该记录非创建者就没有权限,只能读取,所以显示更新成功但是不能更新

  • 验证
    通过修改有openid的芒果记录
update:function(){
    db.collection('foods').where({    
        name:"芒果"      
    }).update({
      data:{
        price:10
      }
    })
    .then(res=>{
      console.log('修改成功',res)
    })
    .catch(err=>{
      console.error('修改失败',err)
    })
  },

在这里插入图片描述
在这里插入图片描述

  • 错误原因:权限问题导致不能更新数据,非创建者不能修改
  • 知识点:数据库权限

云控制台和服务端始终有所有数据读写权限。除自定义权限外,其他权限均不支持无登录态用户访问

おすすめ

転載: blog.csdn.net/weixin_43663349/article/details/116721497