以数字开头的集合的 Firebase 规则不起作用
Firebase rule for collection start with number doesn't work
我有一个名为 2022collection 的集合,但是当我在 Firestore 规则中设置读取访问权限时,它出错了,我搜索了文档和 Whosebug,但没有看到任何关于如何正确编写规则以允许以数字开头的集合。如果我登录到应用程序,我可以很好地写入和读取它,但无法制定 firestore 规则以使其公开可读。以字母开头的集合规则工作正常,但数字完全错误。
如何为以数字开头的 document/collection 创建 Cloud Firestore 规则?
以下是我尝试过的一些方法,显然都没有用。我认为应该有更好的文档,因为我找不到任何解释它的东西。如果存在这样的文档,很高兴被证明是错误的,我一直在搜索 here.
却没有找到它们
您可以使用通配符读取集合名称,然后使用matches()
检查它是否以数字开头。尝试以下规则:
match /{col}/{docId} {
allow read, write: if col.matches("^[0-9].*");
}
请注意,此规则将应用于所有集合,因为您有通配符。
我最终通过更改我的代码来修复它
match /2022users/{2022users} {
allow read;
}
至
match /2022users/{users2022} {
allow read;
}
更改第二个字段后,我能够保存规则并读取集合 2022users。
我有一个名为 2022collection 的集合,但是当我在 Firestore 规则中设置读取访问权限时,它出错了,我搜索了文档和 Whosebug,但没有看到任何关于如何正确编写规则以允许以数字开头的集合。如果我登录到应用程序,我可以很好地写入和读取它,但无法制定 firestore 规则以使其公开可读。以字母开头的集合规则工作正常,但数字完全错误。
如何为以数字开头的 document/collection 创建 Cloud Firestore 规则?
以下是我尝试过的一些方法,显然都没有用。我认为应该有更好的文档,因为我找不到任何解释它的东西。如果存在这样的文档,很高兴被证明是错误的,我一直在搜索 here.
却没有找到它们您可以使用通配符读取集合名称,然后使用matches()
检查它是否以数字开头。尝试以下规则:
match /{col}/{docId} {
allow read, write: if col.matches("^[0-9].*");
}
请注意,此规则将应用于所有集合,因为您有通配符。
我最终通过更改我的代码来修复它
match /2022users/{2022users} {
allow read;
}
至
match /2022users/{users2022} {
allow read;
}
更改第二个字段后,我能够保存规则并读取集合 2022users。