我会用一块石头打破我的头^^“
我有这段代码:
this.af.database.list('/Documentos', { preserveSnapshot: true })
.subscribe(snapshots => {
snapshots.forEach(snapshot => {
console.log(snapshot.key, snapshot.val());
});
})
我正确地提取了所有数据,但现在我想添加到一个对象数组或类似的东西(我几周前开始使用Firebase + Angular2)。
我想填充那个数组来加载[ng2 smart table]如果我想用一个格式正确的数组,我会填满表格,但我不知道如何。希望任何人都可以提供帮助。
答案 0 :(得分:0)
如果您想要一张带有key: value
的地图(对象),可以使用Array.prototype.reduce()轻松完成此操作:
const map = snapshots.reduce((map, snapshot) => {
map[snapshot.key] = snapshot.val();
}, {});
答案 1 :(得分:0)
嗯,根据示例:https://akveo.github.io/ng2-smart-table/#/examples/using-filters ...
(您可以在此处找到源代码:https://github.com/akveo/ng2-smart-table/blob/master/src/app/pages/examples/filter/basic-example-source.component.ts)
...您必须将数据放在JSON对象中:
settings = {
columns: {
id: {
title: 'ID',
filter: false,
},
name: {
title: 'Full Name',
filter: false,
},
username: {
title: 'User Name',
filter: false,
},
email: {
title: 'Email',
filter: false,
}
}
};
data = [
{
id: 1,
name: 'Leanne Graham',
username: 'Bret',
email: 'Sincere@april.biz',
},
{
id: 2,
name: 'Ervin Howell',
username: 'Antonette',
email: 'Shanna@melissa.tv',
}
];
“settings”包含您的列名称,“data”必须与“settings”中的列匹配。
如果我们知道你的代码(你的表的列+你的服务返回的数据)会更容易,但我认为这样的东西会起作用:
data = [];
this.af.database.list('/Documentos', { preserveSnapshot: true })
.subscribe(snapshots => {
snapshots.forEach(snapshot => {
data.push(
{ [snapshot.key]: snapshot.val() }
);
});
})
请注意,这将创建一个JSON数组,每行只有一个键/ val。我们确实需要了解您的数据,以便为您提供一个可靠的答案。
答案 2 :(得分:0)
好的,我找到了一个简单的Array()x)
的解决方案 this.af.database.list('/Documentos', { preserveSnapshot: true })
.subscribe(snapshots => {
snapshots.forEach(snapshot => {
let length = todo.documentos.push(snapshot.val()); // documentos is an array in the class
todo.source.load(todo.documentos);
});
});