Javascript I';当试图使用forEach函数控制台记录一个简单对象时,我变得不确定
我知道这是一个很难回答的问题,但我就是不明白为什么在我使用下面的forEach函数时,当我试图从我的数据库中控制台记录一个对象的属性时,我没有定义Javascript I';当试图使用forEach函数控制台记录一个简单对象时,我变得不确定,javascript,Javascript,我知道这是一个很难回答的问题,但我就是不明白为什么在我使用下面的forEach函数时,当我试图从我的数据库中控制台记录一个对象的属性时,我没有定义 readLocations = () => { console.log("readlocations called") let locations = firebase .database() .ref("/locations/"); locations.on('value', (snaps
readLocations = () => {
console.log("readlocations called")
let locations =
firebase
.database()
.ref("/locations/");
locations.on('value', (snapshot) => {
snapshot.forEach((thing) => {
console.log("thingy object", thing)
console.log("thingy latitude", thing.latitude)
})
});
}
第一个console.log记录以下内容
thingy Object {
"created_at": 1574980834124,
"latitude": 52.4673777,
"longitude": 13.4327486,
}
thingy Object {
"created_at": 1575026634915,
"latitude": 52.5169399,
"longitude": 13.4175105,
}
thingy Object {
"created_at": 1575043262077,
"latitude": 52.5177105,
"longitude": 13.4153796,
}
thingy Object {
"created_at": 1575115938922,
"latitude": 52.5097333,
"longitude": 13.2829992,
}
但是,第二个日志返回未定义的
thingy latitude undefined
thingy latitude undefined
thingy latitude undefined
thingy latitude undefined
thingy latitude undefined
我在这里遗漏了什么?听起来好像
东西是异步填充的,在您记录它之后,一般来说,记录对象不会在键名周围插入双引号。听起来你的DB调用并没有返回一个简单的对象。我建议检查API以确定是否需要使用一些特殊的内容来访问字段。也许可以试试thing.get('latitude')
看起来你需要调用thing.val()
谢谢@robbtraster,这很有效!