【问题标题】:Getting an Error when Trying to Update Firebase Realtime Database尝试更新 Firebase 实时数据库时出错
【发布时间】:2021-11-04 08:50:11
【问题描述】:

代码给了我错误并且没有更新数据库:

未捕获的错误:更新失败:值参数在路径 /user-Projects/[object HTMLInputElement]/-Mne7bupWgxUwAS-GtVh 中包含无效键 ([object HTMLInputElement])。键必须是非空字符串,并且不能包含“.”、“#”、“$”、“/”、“[”或“]”

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);


});

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

    您在路径中使用了您的 user 变量,该变量被初始化为

    const user = document.getElementById('userName');
    

    因此,您尝试将 HTML 元素放入路径中,而不仅仅是该元素的当前值,我认为您可能正在尝试这样做。

    要仅使用 userName 元素的当前值,请使用:

    const user = document.getElementById('userName').value;
    

    【讨论】:

    • 谢谢,我会调查的。我认为问题出在代码的后面。在本节中:updates['/Projects/' + newProjectKey] = projectData;updates['/user-Projects/' + user + '/' + newProjectKey] = projectData;
    • 这确实是消息的来源,但问题来自(正如我在回答中解释的那样)没有读取输入的值。您是否尝试过我在答案中显示的更改?就是单行改,推荐试试。
    • 成功了,非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多