这是控制台的屏幕截图,显示输出,即在其中一个用户的消息目录中添加的子项。
此外,必须注意到我已经显示了非常短的控制台部分,因为控制台为每条消息显示类似的输出。如果需要更多屏幕截图来澄清,请告诉我,我会添加它们!
这是我的json代码:
{
"Tf42glUiUvbF1yGMX1CseYD6EVC3" : {
"intents" : {
"intentFields" : "",
"intentName" : ""
},
"messages" : {
"-KViVgc7ZG051eMXP0-5" : {
"name" : "Ed",
"photoUrl" : "https://cdn1.iconfinder.com/data/icons/user-pictures/100/male3-512.png",
"text" : "Hello, I'm Ed, your personal assistant cum friend",
"timeStamp" : "1476880306"
},
"-KW3C8azYBP_-BIlWmNV" : {
"name" : "Aakash Bansal",
"photoUrl" : "https://lh5.googleusercontent.com/-oQyA4HXVycc/AAAAAAAAAAI/AAAAAAAAHKo/Ov0A0p0LjiY/s96-c/photo.jpg",
"text" : "hi", //this is the message displayed in the console above.
"timeStamp" : "1478613047"
}
}
},
"gFiPrpHcHeMkqG2tGUi1aolIR3x1" : {
"intents" : {
"intentFields" : "",
"intentName" : ""
},
"messages" : {
"-KViVgc7ZG051eMXP0-5" : {
"name" : "Ed",
"photoUrl" : "https://cdn1.iconfinder.com/data/icons/user-pictures/100/male3-512.png",
"text" : "Hello, I'm Ed, your personal assistant cum friend",
"timeStamp" : "1476880306"
}
}
}
}
这是我的node.js代码:
ref.on("child_changed", function(snapshot){
snapshot.ref.child("messages").on("child_added", function(itemSnapshot) {
var mytemp = itemSnapshot.child("text");
console.log(mytemp);
});
});
注意我在stackoverflow上查看了一些类似的问题但是当我实现它们时,我发现它们属于firebase的过时版本,并且在当前版本中不起作用。 />
编辑通过使用以下代码,我现在为每个添加的孩子获得null
。另外,我想询问如何获取其子项已更改的父级或用户ID。
代码是:
ref.on("child_changed", function(snapshot){
//using limitToLast(1) to get last value only
snapshot.ref.child("messages").orderByKey().limitToLast(1).once("value", function(itemSnapshot) {
var mytemp = itemSnapshot.child("text").val();
console.log(mytemp);
}); });
这是使用此代码后控制台的屏幕截图 我得到了关于aove问题的答案,但唯一仍然存在的疑问是如何获得孩子已经改变的节点的父节点?
如果需要,请随时要求进一步澄清 谢谢!
答案 0 :(得分:1)
I think you may be looking for this:
ref.on("child_changed", function(snapshot){
snapshot.child("messages").forEach(function(itemSnapshot) {
var mytemp = itemSnapshot.child("text").val();
console.log(mytemp);
});
});