使用 Value() 方法从 Firebase 检索对象
Retrieving Objects from Firebase using Value() Method
我不知道如何让 "value" 以与 "child_added" 相同的方式读取我的 FB 对象中的数据。
以下代码:
postNotes.on("value", function(snapshot){
console.log("VALUE FUNCTION REACHED")
var note = snapshot.val();
console.log(note.noteObject);
});
postNotes.on("child_added", function(snapshot){
console.log("CHILDADDED FUNCTION REACHED");
var note = snapshot.val();
console.log(note.noteObject);
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
...在控制台中显示:
这是FB控制台中的数据:
我不使用任何库。我只想在我的页面加载时显示来自 FB 的数据,并在每次将新数据推送到 FBDB 时继续更新。
我是否遗漏了 "value" 参数的要点?我能做些什么更好?
请放弃涉及 "read the docs"、"use jquery" 之类的答案,或者某些 StackO 用户似乎非常喜欢的无用答案。
几个小时以来,我一直在研究我的这个问题,根据我在 StackO 中看到的其他内容,其他一些人也遇到了类似的问题。非常感谢您查看我的问题并提供您可能拥有的任何见解。
您使用相同的 postsRef
来监听 value
和 child_added
事件。这不是一个常见的使用模式。
value
事件在节点值更改时触发。因此,每当 -J....NI3
的 父节点 更改时,整个 父节点 节点将作为 snapshot
传递到您的回调中。如果您检查 Firebase 仪表板中的数据,您会看到此 parent 节点没有 noteObject
child.
将其与 child_added
事件进行比较,当 子节点添加 到您监听的节点时,该事件会触发。在这种情况下,对 child_added
的回调获取作为其 snapshot
传递的新子节点。而新的子节点确实有一个noteObject
个child.
您通常会在单个最低级别节点上收听 value
事件。当你有一个节点集合时(就像你在这里所做的那样),你通常会使用 child_added
(及其 _changed
、_deleted
和 _moved
兄弟)。但以防万一您真的想对集合使用 on('value'
:
postNotes.on('value', function(notesSnapshot) {
notesSnapshot.forEach(function(noteSnapshot) {
console.log(noteSnapshot.val());
});
});
请注意,这种方法的效率低于监听各种 child_
事件,尤其是当您动态添加或更改集合中的子项时。
我不知道如何让 "value" 以与 "child_added" 相同的方式读取我的 FB 对象中的数据。 以下代码:
postNotes.on("value", function(snapshot){
console.log("VALUE FUNCTION REACHED")
var note = snapshot.val();
console.log(note.noteObject);
});
postNotes.on("child_added", function(snapshot){
console.log("CHILDADDED FUNCTION REACHED");
var note = snapshot.val();
console.log(note.noteObject);
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
...在控制台中显示:
这是FB控制台中的数据:
我不使用任何库。我只想在我的页面加载时显示来自 FB 的数据,并在每次将新数据推送到 FBDB 时继续更新。
我是否遗漏了 "value" 参数的要点?我能做些什么更好?
请放弃涉及 "read the docs"、"use jquery" 之类的答案,或者某些 StackO 用户似乎非常喜欢的无用答案。 几个小时以来,我一直在研究我的这个问题,根据我在 StackO 中看到的其他内容,其他一些人也遇到了类似的问题。非常感谢您查看我的问题并提供您可能拥有的任何见解。
您使用相同的 postsRef
来监听 value
和 child_added
事件。这不是一个常见的使用模式。
value
事件在节点值更改时触发。因此,每当 -J....NI3
的 父节点 更改时,整个 父节点 节点将作为 snapshot
传递到您的回调中。如果您检查 Firebase 仪表板中的数据,您会看到此 parent 节点没有 noteObject
child.
将其与 child_added
事件进行比较,当 子节点添加 到您监听的节点时,该事件会触发。在这种情况下,对 child_added
的回调获取作为其 snapshot
传递的新子节点。而新的子节点确实有一个noteObject
个child.
您通常会在单个最低级别节点上收听 value
事件。当你有一个节点集合时(就像你在这里所做的那样),你通常会使用 child_added
(及其 _changed
、_deleted
和 _moved
兄弟)。但以防万一您真的想对集合使用 on('value'
:
postNotes.on('value', function(notesSnapshot) {
notesSnapshot.forEach(function(noteSnapshot) {
console.log(noteSnapshot.val());
});
});
请注意,这种方法的效率低于监听各种 child_
事件,尤其是当您动态添加或更改集合中的子项时。