2016-03-04 80 views
0

我曾見過關於在Firebase中放置特定安全規則的幾個問題。我已經想出了在這些情況下如何做到這一點。現在,我通過authData.uid信息保存和獲取這個信息.....indexOn的Firebase安全規則:iOS/Swift中的唯一使用規則

[Firebase] Using an unspecified index. Consider adding ".indexOn": "4eb8920a-e407-4488-bce4-c6f64f7b0891" at /UserVideo to your security rules for better performance 

如何爲唯一鍵以及如何添加這樣的安全規則?這裏是我的查詢...

let videoRef = self.ref.childByAppendingPath("UserVideo") 
     videoRef.queryOrderedByChild("\(currentUser)").queryLimitedToFirst(1) 
      .observeEventType(.ChildAdded, withBlock: { snapshot in 
       if snapshot != nil 

任何見識是值得歡迎的!

* UPDATE *

呀。我忘了補充說當前用戶是...

let currentUser = ref.authData.uid 

而且查詢實際上會給出相關信息。它還包括指定的警告。幾次嘗試第二個答案,並更新這個帖子,如果它的作品。如果有其他人有任何想法,請發佈。

+0

這聽起來像是一個逐步開始使用更多時間的查詢。 'videoRef.queryOrderedByChild( 「\(currentUser)」)。queryLimitedToFirst(1)'。如果您想存儲每個用戶的視頻,請將它們存儲爲'/ UserVideo/$ uid/$ videoid'。您的查詢將成爲直接訪問'videoRef.childByAppendingPath(「\(currentUser)」),性能將不取決於用戶數量。 –

+0

除了上面的建議之外,很難在沒有看到相關JSON片段的情況下給出答案(如文本請求,沒有截圖)。 –

回答

0

看到這個:Security & Rules Quickstart

安全性和火力地堡的規則來確定誰具有讀寫訪問你的數據庫,以及確保數據的結構。它們位於您的應用程序面板的安全選項卡中。他們有三種口味:.write,.read.validate

在回答你的問題,通過使用validatewrite加在一起的唯一密鑰的安全規則。

一個例子是:

{ 
"rules": { 
"foo": { 
    // /foo is readable by the world 
    ".read": true, 
    // /foo is writable by the world 
    ".write": true, 
    // data written to /foo must be a string less than 100 characters 
    ".validate": "newData.isString() && newData.val().length < 100" 
} 
    } 
     } 

這是否幫助?