2016-02-14 4 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); 

Действие экономит на мой Firebase сервер просто отлично, но проблема проходит фактическое значение переменной вместо чтения имя переменной.

Есть ли обходной путь в 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

Смежные вопросы