javascript - 尝试更新 Firebase 实时数据库时出错
问题描述
该代码给了我错误并且没有更新数据库:
未捕获的错误:更新失败:值参数在路径 /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);
});
解决方案
你user
在路径中使用你的变量,它被初始化为
const user = document.getElementById('userName');
因此,您尝试将 HTML 元素放入路径中,而不仅仅是该元素的当前值,我认为您可能正在尝试这样做。
userName
要仅使用元素的当前值,请使用:
const user = document.getElementById('userName').value;
推荐阅读
- r - R数据框中的正则表达式错误
- java - 如何重新显示 JTree 节点?
- c - 有没有一个技巧可以让 GCC 优化掉多余的指令?
- excel - VBA Excel:模块在项目资源管理器中可见,但在代码窗口中不可见
- python - PyQuery 不会返回页面上的元素
- firebase - Firebase 管理员:如何从 listUsers() 获取用户的上一页?
- javascript - 从屏幕底部发射 30px 的航点
- mongodb - 按 mongo db 查询中 Map 对象的值属性总和(如果它等于 true)排序
- javascript - 我可以使用 for 循环来创建一系列承诺吗?
- javascript - 为什么我没有完成 POSTMAN 的 PUT 请求?