gpt4 book ai didi

javascript - Firebase实时数据库+JS对象

转载 作者:行者123 更新时间:2023-12-02 20:57:53 25 4
gpt4 key购买 nike

我有一个非常简单的 JS 代码:

var worldRef = firebase.database().ref('something/something1');
var something = new Object();
worldRef.on('child_added', function(snap) {
something.id = snap.key;
something.value = snap.val().value;
});
console.log(something);

它工作得几乎很好 - 只是数据库中的一个键和值,但它是一些东西。如果我修改它:

console.log(something.id);

未定义。我尝试过使用 map 而不是对象,但相同。我在 map 中看到了所有内容,但是当我尝试调用 getmap(key) 时,它是未定义的。

基于数组的解决方案:

var worldRef = firebase.database().ref('something/something1');
var something = [];
worldRef.on('child_added', function(snap) {
something.push ({
id: snap.key,
value: snap.val().value
})
});
console.log(something);

它有效。 enter image description here

最佳答案

这是因为每次添加子项时,您都会重新分配 something< 的 idvalue 属性 对象。

由于,child_added 事件针对此位置的每个初始子项触发一次(请参阅 doc ),最后您的对象仅包含最后一个子项元素。

如果您执行以下操作(为每个子级创建一个新属性),您将看到与使用数组相同的效果:

var something = new Object();
worldRef.on('child_added', function (snap) {
something[snap.key] = snap.val().value;
});

关于javascript - Firebase实时数据库+JS对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61427123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com