我正在尝试从数据库迭代中提取位置数据并在地图上显示标记。 现在我用这个来拉数据:
this.msgData =this.db.list(`/messages/`).valueChanges();
this.msgData.take(1).subscribe(msg =>{
console.log(msg);
});
如您所见,位置数据的存储方式就像那样。有authid-messageid然后是locationlat和locationlong数据。
我想到的第一个想法就是从db中拉出所有locationlat locationlong以某种方式将它们存储在一个数组然后使用for循环将它们添加到地图但我无法弄清楚如何在db中拉出locationlat和locationlong的每个msg?
感谢
答案 0 :(得分:0)
编辑:Demo
问题是我们不知道数组中每个对象的键的名称,所以尝试这样的东西:
function getObjectWithoutKnowingKey(data) {
let objects = [];
for (var propName in data) {
if (data.hasOwnProperty(propName)) {
objects.push(data[propName]);
}
}
return objects;
}
在您的函数中:
this.msgData =this.db.list(`/messages/`).valueChanges();
this.msgData.take(1).subscribe(msg =>{
let data = msg.map(this.getObjectWithoutKnowingKey)
console.log(data); // [{ locationlat: 1, locationlong: 2, message: 'nsg', username: 'john' }]
});