假设我在firestore数据库中有这个结构:
collection[
document: {
x: 'x',
y: 'y'
}
]
我有这个firebase规则:
service cloud.firestore {
match /databases/{database}/documents {
match /collection/{document} {
allow read: if true;
}
}
}
但是这条规则暴露了上述document
中的整个collection
,我想要做的只是公开x
字段,是否可能?感谢
答案 0 :(得分:10)
你做不到。安全规则仅适用于文档级别,因此您无法限制对特定字段的读取权限。
如果您想要执行类似于您建议的操作,则可能需要重新构建数据,以便将非公开数据放在单独的文档中。您很可能希望通过将私有数据放入子集合中来实现此目的。所以你最终会得到这样的东西......
collection: [
document: {
y: 'y'
private-collection: [
document: {
x: 'x'
}
]
}
]
然后你会设置安全规则,如:
service cloud.firestore {
match /databases/{database}/documents {
match /collection/{document} {
allow read: if true;
match /private-collection/{otherdoc} {
allow read: if someOtherRuleThatYouAddHere();
}
}
}
}