El código me está dando el error y no está actualizando la base de datos:
Error no detectado: error de actualización: el argumento de valores contiene una clave no válida ([object HTMLInputElement]) en la ruta /user-Projects/[object HTMLInputElement]/-Mne7bupWgxUwAS-GtVh. Las claves deben ser cadenas no vacías y no pueden contener ".", "#", "$", "/", "[" o "]"
const user = document.getElementById('userName'); //const uid = 0; const project = document.getElementById('projectName'); const model = document.getElementById('modelName'); const addBtn = document.getElementById('addBtn'); const updateBtn = document.getElementById('updateBtn') const db = firebase.database(); const rootRef = db.ref('users') const projRef = db.ref('Projects') addBtn.addEventListener('click', (e) => { e.preventDefault(); //const autoId = rootRef.push().key //console.log('Add button clicked') //Project Entry var projectData = { owner: user, uid: user, title: project }; //Get a key for a new project var newProjectKey = db.ref().child('Projects').push().key; console.log(newProjectKey); var updates = {}; updates['/Projects/' + newProjectKey] = projectData; updates['/user-Projects/' + user + '/' + newProjectKey] = projectData; db.ref().update(updates); });Está utilizando su variable de user en la ruta, que se inicializa como
const user = document.getElementById('userName');Entonces, está tratando de colocar un elemento HTML en la ruta, en lugar de solo el valor actual de ese elemento, que es lo que creo que puede estar tratando de hacer.
Para usar solo el valor actual del elemento userName , use:
const user = document.getElementById('userName').value;