sách gpt4 ai đã đi

firebase - Firestore 安全规则获取引用字段/ID

In lại 作者:行者123 更新时间:2023-12-03 18:14:11 26 4
mua khóa gpt4 Nike

我有两个集合 - 租户和用户。

租赁文档有一个名为“landlordID”的字段,其类型为 REFERENCE(不是字符串)。

现在在我的 Firestore 安全规则中,我希望仅当该租户的 ownerID 字段与发出请求的用户的 uid 匹配时才允许更新租户,即 request.auth.uid .

将其读作“如果创建用户的用户经过身份验证,则允许更新租赁文档,因此 request.auth.uid != null,并且 ownerID 字段的 ID 应等于 request.auth.uid 的 ID。

因此代码应该是这样的:

    service cloud.firestore {

match /databases/{database}/documents {

match /tenancies/{tenancyID}{

allow update: if request.auth.uid != null &&
request.auth.uid == get(resource.data.landlordID).id
}

}

我也试过 get(/databases/$(database)/documents/users/$(resource.data.landlordID)).data.id
支持我的数据库截图

nhập mô tả hình ảnh ở đây

这应该很简单,但 get() 根本不起作用。 Firebase Docs, scroll to "Access other documents"对我的情况根本没有帮助,我不知道如何让它发挥作用。

如果不能像这样使用引用,那将是一种耻辱,因为它们就像文档的任何其他字段一样。

1 Câu trả lời

我在这里看到几个问题。第一个问题是 get() 函数需要一个完全指定的文件路径,例如:

get(/databases/$(database)/documents/users/$(resource.data.landlordID)).data.id

第二个问题是您试图在规则中使用引用类型,不幸的是,我认为这是不可能的。

Firestore 中的引用类型不是很有帮助(还),我认为您应该将 ownerID 存储为字符串,然后您可以简单地执行以下操作:
service cloud.firestore {

match /databases/{database}/documents {

match /tenancies/{tenancyID}{

allow update: if request.auth.uid != resource.data.landlordID;

}

}

关于firebase - Firestore 安全规则获取引用字段/ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55159617/

26 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com