我有以下模型和规则…等式的第一部分工作得很好,用户可以CRUD他自己创建的集合,并且它具有与创建者相同的id。
问题在于由该用户创建的其他集合,因为它具有不同的id(由firestore自动生成的id,我想将此集合锁定为仅由创建它的用户修改),任何想法如何做到这一点?
Collections Model
// Data // doc id === uid
subDataId: null,
createdAt: Timestamp.now(),
// Sub Data // doc id === generated automatically by fb refrenced in the data collection.
online: false,
createdAt: Timestamp.now(),
// Firebase rules
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /Data/{userId} {
allow read , create: if request.auth != null
allow update, delete : if request.auth.uid == userId
}
match /SubData/{SubDataId} {
allow read , create: if request.auth != null
// allow update : if request.auth.uid == ?????????
}
}
}
编写一个规则,要求用户提供自己的用户ID作为正在创建的文档的字段(请参阅关于要求提供字段的文档)。确保应用程序中的代码完全做到了这一点。还要编写一个规则,检查更新文档的用户的用户id是否也与该用户先前写入的字段匹配。
你可能也想看看另一个问题。