2015-11-07 24 views
0

工具:香草火力地堡和香草的JavaScript火力地堡:隨着推創建新的對象,然後按它同時

所以我創建一個新的康沃並增加它在一氣呵成第一條消息。

convos:{ 
    uniqueConvoID1:{ 
     uniqueMessage:{ 
      text:"Hi Gus" 
     }, 
     ... 
    }, 
    ... 
} 

但是因爲雙方都需要一個唯一的ID我基本上需要做兩個推同時。一是創建新的對象(如uniqueConvoID1),然後裏面創建一個新的消息像(uniqueMessageId)。

我試着先創建一個空對象,然後推送消息,但我不認爲先創建一個空對象是有效的。

問題: 如何初始化一個對象兩個對象都需要唯一鍵的對象?

我的嘗試:(我推一個新的消息,並得到了康沃回)

var newConvoIDRef = firebaseConvosRef.push({ 
    authorName: 'Nick', 
    text:"Hey!How you been?", 
    timestamp: Date.now() - 99999 
}); 

其中在儀表板創造了這個:

-convos 
    - -K2111111111111111 //unique convo id 
     -authorName:"Nick" 
     -text:"Hey! How have you been?" 
     -timestamp:1446866141625 

但我需要草簽什麼新的convo這種方式:

-convos 
    - -K2111111111111111 unique convo id 
     - -K222444444444444 unique message id 
      -authorName:"Nick" 
      -text:"Hey! How have you been?" 
      -timestamp:1446866141625 
+0

而不是描述您嘗試的內容,可以分享該嘗試的代碼嗎?請參閱http://stackoverflow.com/help/mcve –

+0

是的!現在就做。 –

+0

@FrankvanPuffelen添加了我所做的。不知道它有多大幫助,但我想不出任何更好的描述。要初始化一個新的convo,我需要創建一個新的對象{},但它只是一條消息{{message}} –

回答

1

我認爲你是嚴重過於複雜的事情。 Firebase會在添加新值時自動創建路徑。因此,這將創建整個鏈:

var convosRef = new Firebase('https://yours.firebaseio.com/convos'); 
var convRef = convosRef.push(); 
var msgRef = convRef.push(); 

msgRef.set({ 
    authorName: 'Nick', 
    text:"Hey!How you been?", 
    timestamp: Date.now() - 99999 
}); 

注意:當刪除它們下的所有值時,Firebase也會自動清理路徑。因此,您可以通過以下方式刪除樹的整個分支:

msgRef.remove(); 
+0

謝謝。這看起來應該很容易。我昨晚試了這個convosRef.push({})來初始化,並且在我推送消息之前導致了一個錯誤。還請閱讀,你不能推空數據,所以我非常困惑。 –

+0

我希望文檔說'push(null)'和刪除那個位置的數據是一樣的。但認識到路徑只是字符串更重要。 Firebase服務器不會爲我的代碼段中的兩個'push()'操作創建任何內容,它甚至不知道它們。只有當我們「設定」我們的價值時,它纔會聽到整條道路,並創造出必要的條件。 –