我正在开发一个应用程序,在该应用程序中,我需要一组属于某个组(商店)的用户(雇员),以便仅当这些客户的某个员工下了订单时才能从“客户”表中读取同一家商店。 到目前为止,这是我的结构(顶层是集合):
Users: [
{id: 1, name: "John", store: "a"},
{id: 2, name: "Jane", store: "a"},
{id: 3, name: "Charles", store: "b"},
],
Stores: [
{id: "a", name: "Store A"},
{id: "b", name: "Store B"},
],
Customers: [
{id: "1", name: "Customer 1", ...data},
{id: "2", name: "Customer 2", ...data}
],
Orders: [
{id: "001", customer: "/Customers/1", employee: "/Users/1"},
{id: "002", customer: "/Customers/2", employee: "/Users/3"}
]
在此示例中,John和Jane应该能够看到客户1 ,但是不能看到客户2,而Charles应该能够看到客户2 ,但是不能看到客户1。
我试图做一个函数来做到这一点,就像这样:
function canSeeCustomers() {
if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.store == ?
}
但是我不知道如何对照 Orders 集合检查 store 字段。
有没有办法做到这一点?还是我会更好地重构数据库结构以使 Users 是 Stores 的子文档?
答案 0 :(得分:0)
也向您的客户添加商店数据。 stores: {a: true}
。
所以你可以做
allow read: if resource.data.stores[get(/databases/$(database)/documents/users/$(request.auth.uid)).data.store];