У меня есть функция, которая должна идти вперед и обновлять базу данных на firebase

function editUser() { var userID = document.getElementById('userID').value; var editUserField = document.getElementById('editUserField').value; var newUserValue = document.getElementById('newUserValue').value; var database = firebase.database().ref().child('users/'   userID); database.once("value", function(snapshot){ console.log(snapshot.val()); }) database.update({ editUserField: newUserValue }) } 

Приведенный выше код работает. Он получает правильного пользователя, но чего не происходит — поле не обновляется, а создает новое поле в базе данных и присваивает ему значение.

Похоже, значение пары ключей передается в

 editUserField: newUserValue 

но на самом деле он принимает значение editUserField

вместо того, чтобы получать его от входа:

 var editUserField = document.getElementById('editUserField').value; 

Значение на самом деле сохраняется правильно из:

 var newUserValue = document.getElementById('newUserValue').value; 

Но он не обновляет значение для правильного ключа, а создает новое поле с именем editUserField

Мне нужно, чтобы получить значения из ввода и обновить поля в Firebase.

Если я правильно понимаю ваши намерения, вы хотите, чтобы поле, которое обновляется, было значением editUserField .

Например, если editUserField"favorite-food" editUserField "favorite-food" а newUserValue"pizza" , вы хотите, чтобы { favorite-food: pizza } newUserValue { favorite-food: pizza } был добавлен к данным пользователя.

Если это так, вы были очень близки, вам просто нужно editUserField в квадратные скобки, чтобы использовать его значение:

 database.update({ [editUserField]: newUserValue }) 

Примечание: не забудьте продезинфицировать editUserField ! Вы не хотели бы, чтобы они устанавливали { isAdmin: true } .