数据库
List = [1, 2, 3, 4, 5]
# input() only works for Python 3.x . Use raw_input() if using python 2.x
InputName = input("Please enter a name: ")
Usernames = [InputName + str(entry) for entry in List]
print(Usernames)
file= open("Text.txt","w+")
for username in Usernames:
file.write(username)
file.close()
功能:
"testTree" : {
"-L7SdD-wGoFfewfde2oI" : { //Firebase key
"testX" : {
"ef43E2Vde" : { // User Generated
"testY" : {
"numX" : 87,
}
},
"Me5Eq2V9e" : { // User Generated
"testY" : {
"numX": 12
}
}
},
"treeName" : "TestTREE",
},
"-L7heD-VdO9efgDaIOp" : {
"testX" : {
"9vEf029QP" : {
"testY" : {
"numX" : 35,
}
}
}
},
}
HTML:
treeData: any[] = [];
getTree() {
this.db.list('/testTree/')
.valueChanges()
.subscribe(res => {
Object.keys(res)
.map(key => {
this.treeData.push(res[key]);
console.log(res[key]);
})
})
输出:
<div *ngFor='let userData of treeData'>
{{ userData.devices }} //typo
{{ userData.testX }}
从我的理解* ngFor将只迭代数组而不是对象。我以为我正在存储并将结果推送到我的数组treeData。我只想输出所有的数字&#39;。我究竟做错了什么?甚至可以使用&#34; User Generated&#34;来迭代我的数据库。达到&#39; numX&#39;?
答案 0 :(得分:0)
因此,如果您知道如何获得{"ef43E2Vde": { "testY": { "numX": 87, ...}
,正如您在评论中提到的那样,您只需要&#34;对待&#34;这个javaScript对象是为了获取你需要的数据。
例如,如果你Object.keys(userData.testX)[0]
,你会得到&#34; ef43E2Vde&#34;
更准确地说,您可以使用以下功能
function getAttributeByIndex(obj, index){
var i = 0;
for (var attr in obj){
if (index === i){
return obj[attr];
}
i++;
}
return null;
}
并致电getAttributeByIndex(userData.testX, 0)
,它将返回{&#34; numX&#34;:87,...}对象
答案 1 :(得分:0)
您可以尝试使用snapshotChanges()而不是valueChanges(),也可以在同一个json中获取id:
getTree() {
return this.db.collection('testTree').snapshotChanges().map(
spapDoc => {
return spapDoc.map(doc => {
return {
id: doc.payload.doc.id,
...doc.payload.doc.data()
};
});
});
}