0

我正在爲預訂過程設置Firebase數據庫。每個用戶都可以閱讀和編寫自己的預訂。下面的規則:Firebase安全規則:全部閱讀單個屬性?

"bookings": { 
     //user can only read/write their bookings 
     "$user": { 
      ".read": "auth.uid === $user", 
      ".write": "auth.uid === $user", 
     } 
     } 

當用戶去預訂時,他們需要查看日曆中的不可用日期。因此,他們在技術上需要能夠讀取預訂節點的到達和離開屬性,以便應用程序可以使用現有預訂來填充日曆,並且標記日期不可用。

當然,在執行此操作時,所有其他預訂信息都必須保持私密,並且只能由製作該服務的用戶訪問。也許試圖讀取單個屬性不是正確的解決方案?

回答

1

我覺得更合適的數據結構可能是這樣的:

{ 
    "bookings": { 
    "rooms": { 
     "room1": { 
     "booking1": { 
      "fromDate": timestamp, 
      "toDate": timestamp, 
      "privateData": { 
      "userID": "user1" 
      } 
     } 
     } 
    } 
    }, 
    "users": { 
    "user1": { 
     "name": "Devid" 
     "bookings": { 
     "room1": { 
      "booking1": true 
     } 
     } 
    } 
    } 
} 

使您的安全規則可以允許任何用戶只讀fromDatetoDate

"bookings": { 
    //user can only read/write their bookings 
    "$roomID": { 
    "$bookingID": { 
     "fromDate": { 
     ".read": "auth.uid !== null", 
     ".write": "newData().userID === auth.uid" 
     } 
    } 
    } 
} 
+0

嗨喬希,這是否幫助? :) –