我有一个具有以下结构的实时Firebase数据库:
-- places
-- user1 uid
-- name:
-- latitude:
-- longitude:
-- user2 uid
-- name:
-- latitude:
-- longitude:
从Firebase提取数据时,我想像这样存储它
-- user1 name
-- latitude
-- longitude
-- user2 name
-- latitude
-- longitude
目前,我有这种遍历数据的代码结构,但是我仍然坚持获取每个数据并按上面的方式进行存储。
constructor(props) {
super(props);
this.state = {
places: []
};
}
componentDidMount() {
const ref = firebase.database().ref('places/');
ref.once('value', (snapshot) => {
snapshot.forEach(snapshotchild => {
snapshotchild.forEach(data => {
})
})
});
}
答案 0 :(得分:1)
查看数据表,我假设您正在以这种方式获取数据
const places = {
user1Uid: {
name: 'av',
latitude: '1000',
longitude: '1000'
},
user2Uid: {
name: 'we',
latitude: '1000',
longitude: '1000'
}
}
如果是这样,则可以使用Array.forEach
,for in
甚至使用Array.reduce
来操纵数据,
例如
const obj = {};
Object.keys(places).forEach(item => {
obj[places[item].name] = {
latitude: places[item].latitude,
longitude: places[item].longitude
}
});
console.log(obj);
或者如果您想使用reduce,
const newObj = Object.keys(places).reduce((accumulator, item) => Object.assign({
[places[item].name]: {
latitude: places[item].latitude,
longitude: places[item].longitude
}
}, accumulator), {});
console.log(newObj);
您将在控制台中获得一个对象,例如
{
"we": {
"latitude": "1000",
"longitude": "1000"
},
"av": {
"latitude": "1000",
"longitude": "1000"
}
}
如果您想了解有关减少的更多信息,请访问link
快乐编码:)