注:以下分析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
我猜想可以是权限的问题,我看了下我设置的权限
猜想:那很可能是香蕉那条记录,没有 _openid,说明非用户添加的记录,那前端用户修改该记录非创建者就没有权限,只能读取,所以显示更新成功但是不能更新
- 验证
通过修改有openid的芒果记录
update:function(){
db.collection('foods').where({
name:"芒果"
}).update({
data:{
price:10
}
})
.then(res=>{
console.log('修改成功',res)
})
.catch(err=>{
console.error('修改失败',err)
})
},
- 错误原因:权限问题导致不能更新数据,非创建者不能修改
- 知识点:数据库权限
云控制台和服务端始终有所有数据读写权限。除自定义权限外,其他权限均不支持无登录态用户访问