2016-02-14 51 views
3

我已將大部分時間花在Java和C++等語言上,但我試圖選取JavaScript。我試圖完成的是通過傳遞變量的值來設置父節點名稱的方法。我使用的是Firebase,如果在這段代碼中有所不同,但我不認爲它會。將JSON節點名稱設置爲變量值

var parent_node_name = "EPLU200"; 
var onComplete = function(error) { 
    if (error) { 
     console.log('Synchronization failed'); 
    } else { 
     console.log('Synchronization succeeded'); 
    } 
}; 

// update adds the data without replacing all of the other nodes 
myFirebaseRef.update({ 
    parent_node_name: { // trying to change this part to not save as "parent_node_name" 
     id2: "1175", // but instead as "EPLU200" 
     ... 
    } 
}, onComplete); 

的操作保存到我的火力地堡服務器就好了,但問題是傳遞變量的實際值,而不是讀的變量名。

JavaScript有什麼解決方法嗎?我試圖尋找它,但我不知道該怎麼稱呼它。

+0

[在JavaScript對象文字中爲鍵使用變量]的可能重複(http://stackoverflow.com/questions/2274242/using-a-variable-for-a-key-in-a-javascript- Ø bject-literal) –

+0

我意識到它非常相似。對於有這樣一個密切的問題,我表示歉意。不知道他們有一個完整的文檔專門用於這樣的東西 – booky99

+0

作爲一個方面說明:通常情況下,將父節點名稱與它們包含的數據分離是一種很好的做法 - 硬編碼固定名稱通常會導致您將自己編碼到一個角落。如果您有一個「通用」節點名稱,那麼您可以輕鬆地在其他節點中保留對其的引用,並且如果其中一個子節點需要更新,則可以在不需要更新節點引用的任何其他位置的情況下完成此操作。 – Jay

回答

0

根據不同的環境(即節點?)

myFirebaseRef.update({ 
    [parent_node_name]: { 
     id2: "1175", 
     ... 
    } 
}, onComplete); 

看到代碼註釋爲Computed property names (ES6)New Notations in ES2015 doumentation在MDN

如果不工作,你必須做這個

var obj = {}; 
obj[parent_node_name] = { 
    id2: "1175", 
    ... 
}; 
myFirebaseRef.update(obj, onComplete); 
+0

[parent_node_name]文字正是我所需要的。謝謝! – booky99