尝试更新 Firebase 实时数据库时出错
Getting an Error when Trying to Update Firebase Realtime Database
代码给我错误并且没有更新数据库:
Uncaught Error: update failed: values argument contains an invalid key ([object HTMLInputElement]) in path /user-Projects/[object HTMLInputElement]/-Mne7bupWgxUwAS-GtVh. Keys must be non-empty strings and can't contain ".", "#", "$", "/", "[", or "]"
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);
});
您正在路径中使用 user
变量,该变量初始化为
const user = document.getElementById('userName');
所以您试图将 HTML 元素放入路径中,而不仅仅是该元素的当前值,我认为您可能正在尝试这样做。
要仅使用 userName
元素的当前值,请使用:
const user = document.getElementById('userName').value;
代码给我错误并且没有更新数据库:
Uncaught Error: update failed: values argument contains an invalid key ([object HTMLInputElement]) in path /user-Projects/[object HTMLInputElement]/-Mne7bupWgxUwAS-GtVh. Keys must be non-empty strings and can't contain ".", "#", "$", "/", "[", or "]"
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);
});
您正在路径中使用 user
变量,该变量初始化为
const user = document.getElementById('userName');
所以您试图将 HTML 元素放入路径中,而不仅仅是该元素的当前值,我认为您可能正在尝试这样做。
要仅使用 userName
元素的当前值,请使用:
const user = document.getElementById('userName').value;