2016-11-06 6 views
2

Я играю с сервером Node и не могу установить значения в Firebase с предоставленной строкой.Узел Javascript - установка строковой переменной в литерал вместо ее значения

выпуска: Когда я пытаюсь установить значение переменной carId в первой строке для цикла, она устанавливается как carId: true, а не ожидаемое поведение ->exampleCardId12345: true.

Почему значение установлено на carId, а не на значение переменной carId, которую я установил перед циклом for?

db.ref('/cars').once("value", function(snapshot) { 
     snapshot.forEach(function(data) { 
      var carId = data.key; 
      var drivers = data.val().drivers; 
      for(key in drivers) { 
       db.ref('/carsById/'+key).set({carId: true}); 
      } 
     }); 
}); 
+0

Прочитайте вопрос дважды, не может сказать, в чем проблема. Я предлагаю вам попробовать снова с фактическим кодом, показывающим ожидаемое и фактическое поведение. Добавьте несколько журналов и объясните, что не происходит, как ожидалось –

+0

Я смущен. Вы создаете переменную 'carId' и устанавливаете значение' data.key'. Затем вы выполняете итерацию по набору драйверов, записывая одно и то же значение каждый раз. Тогда ничего не делать с этим. Что именно вы ожидаете? – Paul

+0

Извините за путаницу, это сложно. Я снова использую переменную 'carId', чтобы установить ее как ключ в' db.ref ('/ carsById /' + key) .set ({carId: true}); '. Однако он не устанавливает значение «carId» в качестве ключа, а скорее «carId» в качестве ключа. Имеет ли это смысл? – justColbs

ответ

3

Если вы хотите использовать значение переменной для ключа, используйте computed property name syntax:

db.ref('/carsById/'+key).set({ [carId]: true }); 
          ^ ^
          ^ ^
Смежные вопросы