每个食谱文档包含三个内容。一个名为name
的字段,其中存储菜谱的名称;一个名为creatoruid
的字段,其中存储创建者uid的request.auth.uid
,以及一个名为changitions
的子集合,其中包含带有一些随机字段的文档。
service cloud.firestore {
match /databases/{database}/documents {
function isSignedIn() {
return request.auth != null;
}
match /ListOfRecipes/{recipe} {
allow read, create: if isSignedIn();
allow update, delete: if resource.data.creatorUID == request.auth.uid;
match /{list=**} {
allow read: if isSignedIn();
// Should return true if recipe.creatorUID has same value as request.auth.uid
allow write: if recipe.creatorUID == request.auth.uid;
}
}
}
}
问题是,使用这些规则只能创建菜谱文档。子集合及其文档不会创建,因为db表示
FirebaseError:[code=permission-denied]:缺少权限或权限不足。FirebaseError:缺少权限或权限不足。
规则不是级联的,所以您需要对由规则捕获的文档执行所需的检查。
一般来说,{x=**}
规则通常是错误的,并且=**
的用法只适用于非常特定的用例。
根据您的问题,我假设您的数据模式如下所示:
/ListofRecipes/{recipe_document}/List/{list_document}
service cloud.firestore {
match /databases/{database}/documents {
function isSignedIn() {
return request.auth != null;
}
match /ListOfRecipes/{recipe} {
allow read, create: if isSignedIn();
allow update, delete: if resource.data.creatorUID == request.auth.uid;
function recipeData() {
return get(/databases/$(database)/documents/ListOfRecipes/$(recipe)).data
}
match /List/{list} {
allow read: if isSignedIn();
allow write: if recipeData().creatorUID == request.auth.uid;
}
}
}
}
假设我有一个集合,其中包含子集合。餐厅权限设置在餐厅文档中,如下所示: 餐馆 任何有权访问餐厅的人也可以访问它的任何子集合,包括子集合。这是安全规则: 安全规则 查询餐厅列表可以这样完成,而且效果很好: 查询餐厅 现在如何查询子集合?我知道Firestore需要根据查询推断权限,而不查看底层数据。从逻辑上讲,这应该是可能的,因为任何可以访问的人也可以访问子集合。但是我如何组合这个子集合查询,以便F
我正在用Flutter开发一个应用程序。我在Firestore上有一个结构为:users/(UserID)/collection/document的数据库,这里UserID是创建(UserID)文档的用户的唯一uid。代码用于获取用户的uid is 其中user是FireBaseUser的实例。我试图设置这样的规则,即只有当request.auth.uid与(UserID)文档id匹配时,只有用户
我有一个用于Express/Mongo健康跟踪应用程序的后端API。 每个用户都有一个数组,子文档包含一个值、一个单位和记录的日期。如果未指定单元,则默认为。 每个用户还有一个defaultUnit字段,可以为该用户指定默认单位。如果该用户在未指定单位的情况下发布称重输入,则称重输入应使用用户的默认单位(如果存在),否则默认为。 该逻辑的正确位置在哪里? 我可以在我的WeighInsControl
所以我现在的规则是这样的。 我的问题是,即使在写到子集合时,它是否会准确地检查用户是否在group1->doc->subcollection->doc-'members'中,或者在这种情况下,它是否会签入group1->doc->subcollection->doc-'members'? 因为members列表只在groups集合中,而不在子集合中,所以不希望出现第二种情况。
我是一个初学者,我的消防库数据库有一个包含文档的集合,每个文档都有一个子集合,没有任何其他字段。我找不到一种方法来访问空文档的 ID,并使用 SDK 获取与文档关联的子集合。我可以在控制台上执行此操作,但我必须做太多事情,并且现在也无法对我的应用程序进行更改,因此我需要使用SDK。请建议我一些访问它们的方法,如控制台。
在云火烧-最佳实践留档第一行写道: 每秒钟更新一个文档的次数不应超过一次。如果您更新文档的速度过快,那么您的应用程序将遇到争用,包括更高的延迟、超时和其他错误。 我有一个这样的数据库结构: 我的应用程序管理一个储物柜清单,人们可以登记入住 我的希望是,由于储物柜文件在一个子集合中,我可以同时读/写多个储物柜。我担心它们被视为一个文档(存储文档)的一部分,我一次只能读/写一个储物柜。