Javascript 数据未添加到数据库中的现有节点
我一直试图在没有任何运气的情况下向数据库添加数据。 在我的代码中,我在单击时制作了一个按钮,它会将数据添加到我的用户数据库中,但不会将数据添加到用户中,但它只是将数据添加到外部,如下所示: 是不是因为在使用createUserWithEmailAndPassword()函数时无法添加数据 有人能告诉我怎么做吗Javascript 数据未添加到数据库中的现有节点,javascript,firebase,web,firebase-realtime-database,firebase-authentication,Javascript,Firebase,Web,Firebase Realtime Database,Firebase Authentication,我一直试图在没有任何运气的情况下向数据库添加数据。 在我的代码中,我在单击时制作了一个按钮,它会将数据添加到我的用户数据库中,但不会将数据添加到用户中,但它只是将数据添加到外部,如下所示: 是不是因为在使用createUserWithEmailAndPassword()函数时无法添加数据 有人能告诉我怎么做吗 btn.addEventListener("click", function() { firebase.auth().onAuthStateChanged(function(u
btn.addEventListener("click", function()
{
firebase.auth().onAuthStateChanged(function(user)
{
if (user)
{
var massage = inputText.value;
var ref = database.ref("Users");
var data = {
display: massage
}
ref.push(data);
}
});
});
如果您想在Firebase数据库中插入一个新条目,那么您的代码似乎是正确的(就像您的屏幕截图所示)
但是,如果你真的想注册一个新用户,那么你应该使用firebase.auth().createUserWithEmailAndPassword()
最后,如果确实要更新现有节点,请参阅上面的Frank响应;-) 无论何时调用
push()
Firebase都会生成一个新的唯一ID。因此,要将新数据添加到现有节点,不应调用push。相反,您需要为该用户找到对现有节点的引用
最简单(也是最常见)的方法是将用户数据存储在每个用户的UID下
Users
kHD...NoS
username: "bob"
还请注意,没有理由将这种类型的onAuthStateChange
侦听器放在按钮单击处理程序中。只需从顶级JavaScript附加它,当用户登录时或当其身份验证状态以任何其他方式更改时,它就会触发
或者,如果代码确实必须运行以响应按钮的单击,则auth状态侦听器没有实际用途,您可以只检查firebase.auth().currentUser
:
btn.addEventListener("click", function()
{
if (firebase.auth().currentUser)
{
var message = inputText.value;
var ref = database.ref("Users");
var data = {
display: massage
}
ref.child(firebase.auth().currentUser.uid).update(data);
}
}
试试这个。您可以将“更新”更改为“设置”。就你的情况来说
demo.update(“用户/KIK…fuA”、“显示”、“我的消息”)代码>
你是说我首先需要在我的用户中创建“display”并更新它。因为你不能只向用户列表中添加数据?不,不是这样的。但每次调用push()
,都会创建一个新的子对象。如果要更新现有子级,请不要调用push()
。
//REVEALED METHOD TO ADD NODES WITH DATA TO REALTIME DATABASE
//eg, demo.update('mynode','myKey','myValue')
var demo = (function() {
var pub = {};
pub.update = function (node,key,value){
var ref = firebase.database().ref('/');
var obj = {};
obj[key] = value;
ref.child(node).update(obj)
.then(function() {
console.log('Update Ran Successfully');
});
}
//API
return pub;
}());