2013-04-02 31 views
2

我一直在試圖動態地將子項添加到我的Firebase數據引用URL中,到目前爲止沒有運氣。將動態子項添加到我的Firebase參考URL

假設我有以下數據結構:

MyApp的
| -beta_signups
| -users
| --fred
| ----電子郵件 「[email protected]

我希望能夠根據他們的電子郵件地址在「註冊」部分添加註冊的人,作爲孩子。這是我嘗試過的,但沒有奏效。

var myDataRef = new Firebase("https://myapp.firebaseio.com/beta_signups/"); 
    $('#submit').click(function() { 
     var email = $('#email').val(); 
     myDataRef.child(email).push({email: email, beta_key: false}); 
     $('#email').val('We got it.'); 
    }); 

有關我如何動態添加孩子的任何建議?

回答

4

您不能將電子郵件地址用作子路徑的密鑰,因爲它包含無效字符。請參閱文檔中的Creating References

您還正在根據電子郵件地址創建一個子項,然後使用push創建電子郵件的子項。也許,你應該擺脫.child(email)位並使用push來創建記錄。

var user_id = myDataRef.push({email: email, beta_key: false}).name(); 

首先要問的是你是否真的想通過電子郵件存儲用戶。一般來說,一個ID會更有用(他們可能會稍後更改他們的電子郵件,在這種情況下,您必須重新輸入系統中的所有用戶數據)。

如果這是一個要求,那麼你要麼必須對它們進行散列或對它們進行清理。例如:

// replace all forbidden characters with something that won't appear in the email address 
var key = email.replace(/[.$\[\]\/#]/, ','/); 
myDataRef.child(key).set({email: email, beta_key: false});