我正在使用MongoDB Realm Swift SDK和应用程序后端。我正在使用@ObservedResults
属性 Package 器访问视图中的Realm对象。
我需要为一个名为Procedure
的协作文档设置权限。该文档由所有者创建,所有者可以邀请其他用户(* 主管 )对其进行评论并签署。
只有主管可以写他们的响应,只有所有者可以写其他字段,尽管每个字段都应该能够读取其他字段的内容( 私人注解 * 除外,主管应该看不到它)。
我在下面的类定义中对权限进行了注解。
class Procedure: Object {
// ID
@Persisted(primaryKey: true) var _id: ObjectId
// Owner (this is unique per user)
@Persisted var ownerID: String
// Read/write by owner. Read by supervisor.
@Persisted var title: String
@Persisted var body: String
// Private notes - Read/write by owner, invisible to supervisor
@Persisted var privateNotes: String
// Supervisor - this is the user ID of the supervisor
@Persisted var supervisorID: String?
// Supervisor response - Read/write by supervisor. Read by owner
@Persisted var supervisorResponse: String?
}
extension Procedure: Identifiable {
var id: String {
self._id.stringValue
}
}
我正在使用 Flexible Sync 并尝试设置以下权限文档。
{
"rules": {
"Procedure": [
{
"name": "supervisor_restricted_read",
"applyWhen": {
"supervisorID": "%%user.id"
},
"fields": {
"privateNotes": {
"read": false,
"write": false
}
},
"additional_fields": {
"read": true,
"write": false
}
},
{
"name": "owner_read_write",
"applyWhen": {},
"read": {
"ownerID": "%%user.id"
},
"write": {
"ownerID": "%%user.id"
}
}
]
},
"defaultRoles": []
}
但是,使用这些权限,我仍然只能获得与@ObservedResults
中的ownerID
匹配的Procedure
示例(而不是supervisorID
与当前用户ID匹配的示例)。
我认为我使用的权限不正确!
1条答案
按热度按时间v8wbuo2f1#
在进一步阅读文档时,一个用户一次只能有一个会话角色。由于一个用户可以同时是(不同文档的)所有者和监督者,我尝试将权限滚动到一个角色中,使用 OR predicate ,这似乎很有效!