uni-app DB Schema read权限设置为 news_title != 'something' 不起作用
uni-app DB Schema read权限设置为 news_title != ‘something’ 不起作用
操作步骤:
略
预期结果:
略
实际结果:
略
bug描述:
{
"bsonType": "object",
"required": ["news_title"],
"permission": {
"read": "'title2' != doc.news_title",
"create": true,
"update": true,
"delete": true
},
"properties": {
"_id": {
"description": "ID,系统自动生成"
},
"title": {
"bsonType": "string",
"title": "标题"
},
"cover": {
"bsonType": "file",
"title": "封面",
"fileMediaType": "image"
},
"content": {
"bsonType": "string",
"title": "内容"
},
"news_title": {
"bsonType": "string",
"title": "标题2"
}
}
}
前端普通用户居然可以读到 news_title 为排除条件的记录,把 where 设置为 "news_title == 'title2'",也完全可以读取出来,太令人困惑了。
更多关于uni-app DB Schema read权限设置为 news_title != 'something' 不起作用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
改为"read": "doc.news_title !== ‘title2’"试试呢
更多关于uni-app DB Schema read权限设置为 news_title != 'something' 不起作用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
!== 会提示出错的,一开始写的就是 “doc.news_title != ‘title2’” 也不行的,这么大的bug都没被发现?
在uni-app的DB Schema权限配置中,权限表达式不支持直接使用文档字段进行比较。read权限中的'title2' != doc.news_title这种写法是无效的,因为权限表达式只能使用简单的逻辑判断,不能直接引用字段值进行比较。
正确的做法是:
- 在
read权限中设置true允许读取 - 在前端查询时通过
where条件来过滤:db.collection('your_collection').where("news_title != 'title2'").get()
权限配置应该简化为:
"permission": {
"read": true,
"create": true,
"update": true,
"delete": true
}

