这是我的JSON文件:node.js-如何获取其子节点已更改且已添加的子节点的父节点?
{
"ERyWg81WxrXUb0sjsu9hv9T7K0E3" : {
"intents" : {
"intentName" : "",
"intentValue" : ""
},
"messages" : {
"-KViVgc7ZG051eMXP0-5" : {
"name" : "Ed",
"text" : "Hello, I'm Ed, your personal assistant cum friend",
"timestamp" : "1476880306"
}
}
},
"Y9UNlizDSobddO8cdq7K4ChipYa2" : {
"intents" : {
"intentName" : "",
"intentValue" : ""
},
"messages" : {
"-KViVgc7ZG051eMXP0-5" : {
"name" : "Ed",
"text" : "Hello, I'm Ed, your personal assistant cum friend",
"timestamp" : "1476880306"
}
}
}
}
这里,ERyWg81WxrXUb0sjsu9hv9T7K0E3
和Y9UNlizDSobddO8cdq7K4ChipYa2
是用户ID和他们有两个孩子,即intents
和messages
谁进一步让他们的孩子如图所示的JSON结构之上。
现在,当用户发送消息时,该消息将被添加到该用户的messages
孩子。另外,必须注意的是,其他用户也可以从数据库中添加或删除。
因此,当添加消息时,如何知道已经发送消息的用户的ID。例如:当ERyWg81WxrXUb0sjsu9hv9T7K0E3
用户消息和消息被添加到messages
子目录ERyWg81WxrXUb0sjsu9hv9T7K0E3
时,我应得到ERyWg81WxrXUb0sjsu9hv9T7K0E3
。我必须在服务器端使用firebase node.js sdk来执行此操作。
仅供参考,我为获得新邮件的node.js服务器端代码:
var db = firebase.database();
var ref = db.ref("/");
console.log("Listening ...\n");
var text, name, timeStamp;
var newPost = {};
ref.on("child_changed", function(snapshot){
snapshot.child("messages").forEach(function(itemSnapshot) {
text = itemSnapshot.child("text").val();
name = itemSnapshot.child("name").val();
timeStamp = itemSnapshot.child("timeStamp").val();
});
ChildChanged事件旨在通知应用何时,呃...孩子已经改变。更改后的节点(父母和孩子)将发送到应用程序。你需要更多的东西吗? – Jay
@Jay,我需要在服务器上获取数据(node.js Firebase SDk),而不是在应用程序上。我通过在嵌套函数中使用“child_changed”和“child_added”侦听器来获取新消息。我需要的是获取发送该邮件的用户的姓名(或者换句话说,其孩子已经更改并添加了孙子的编号 –
您在哪里存储更改或发送人员的姓名。该消息是,“名字:埃德”键:在信息节点的消息中值 – Jay