我不完全确定这是正确的方法,但我试图在我的firebase数据库中附加用户可能收到的不同消息。
我点击按钮时调用了这个函数:
sendMessageButtonClicked: function(){
var loggedInUser = this.state.loggedInUserObject;
var databaseRef = firebase.database().ref().child('users/' + loggedInUser.useruid + '/messages/');
databaseRef.on('child_added', function(snapshot){
var messageBodyValue = document.getElementById('message').value;
var chat = snapshot.val();
var msg = document.getElementById('msgs');
msg.appendChild(messageBodyValue);
})
},
但我收到错误:
failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'
我可以确认messageBodyValue是我输入的内容,例如'你好' chat是一个具有3个属性的对象 msg是一个id。
因此我每次发送时都会尝试将子项附加到此html元素。
我希望我的firebase JSON来自:
"messages" : {
"PHS2DwlCZ0RJaylhJ0FNgEiNLug2" : {
"messageBody" : "Hello, how are you?",
"receiverName" : "Lucy",
"receiverUseruid" : "PHS2DwlCZ0RJaylhJ0FNgEiNLug2"
}
为:
"messages" : {
"PHS2DwlCZ0RJaylhJ0FNgEiNLug2" : {
"messageBody" : "Hello, how are you?",
"messageBody" : "another msg",
"messageBody" : "another child message",
"receiverName" : "Lucy",
"receiverUseruid" : "PHS2DwlCZ0RJaylhJ0FNgEiNLug2"
}
答案 0 :(得分:0)
在将messageBodyValue
传递到appendChild
之前,需要将var messageBodyValue = document.getElementById('message').value;
var messageElement = document.createTextNode(messageBodyValue);
var msg = document.getElementById('msgs');
msg.appendChild(messageElement);
包装在DOM节点中。
"PHS2DwlCZ0RJaylhJ0FNgEiNLug2" : {
"messageBody" : "Hello, how are you?",
"messageBody" : "another msg",
"messageBody" : "another child message",
"receiverName" : "Lucy",
"receiverUseruid" : "PHS2DwlCZ0RJaylhJ0FNgEiNLug2"
}
这不应该影响Firebase实例中的数据结构,但看起来您尝试存储数据的方式可能存在问题。
messageBody
对象无法拥有多个messageBody
属性。
相反,您必须抓住ngMaterial
参考号,然后再push
更多值。