- 修改程序文件并编译,却没有出现所修改的变化?
比如我删除了wxml的所有内容,这时候预览应该显示一个白板,但是却依然显示之前的内容。js那里也是如此,今天突然出现的这个问题。
2023-01-12 - 云数据库使用自定义安全规则,查询时传入openid的目的是什么?
使用自定义安全规则: { "read": "doc._openid == auth.openid", "write": "doc._openid == auth.openid" } 数据库: todos : { _id : 'xxxxxx', _openid : 'xxxxxxxxxxx1234', //这是在开发环境运行app插入数据时自动插入的值, data : 'test' } 查询的时候传入“_openid”作为唯一的参数,可以成功取到数据: db.collection('todos').where({ _openid: 'xxxxxxxxxxx1234', }).get().then(res =>{ console.log(res); }); 然后我做了几个测试: 1. 把where里传递的_openid值改成其它值,包括瞎写一个值,和写一个其它的正确的openid,都会抛出错误: db.collection('todos').where({ _openid: '换了一个openid', }).get().then(res =>{ console.log(res); }); Error: errCode: -502003 database permission denied | errMsg: Permission denied 2. 直接在云管理界面把数据库的_openid记录改成其它值,程序依然传递正确的openid,这次只是像期待的那用取不到记录,但是不抛出错误。 3. 不传递openid,我看到文档里说只要使用建议的自定义安全规则,就要传递openid参数,因此依然提示: Error: errCode: -502003 database permission denied | errMsg: Permission denied 换句话说,实际的安全规则考虑的是客户端自己上传的openid,外加_openid参数。这样做的目的是什么? 因为如果隐式的由小程序默默的传递openid,就省略了开发者自己获取openid的麻烦事。
2022-12-05