我正在尝试使用Firebase为房地产代理商创建数据库。我决定创建一个flatten数据库,但我需要一些帮助.. (我使用的是AngularJS)
以下是数据库的示例:
"city" : {
"Montpellier" : {
"xx2" : true,
"xx3" : true
},
"Teyran" : {
"xx1" : true
}
},
"owners" : {
"xxx1" : {
"lastname" : "Duparc",
"name" : "Jean"
},
"xxx2" : {
"lastname" : "Dupont",
"name" : "Henry"
},
"xxx3" : {
"lastname" : "Wood",
"name" : "John"
}
},
"prices" : {
"xxx1" : 405000,
"xxx2" : 100000,
"xxx3" : 122000
},
"type" : {
"appartment" : {
"xx2" : true
},
"home" : {
"xx1" : true
},
"land" : {
"xx3" : true
}
}
XX1,XX2,XX3是每种产品的参考号。
在这个数据库中,我们看到在节点Type中有:
问题是:如果我想列出每种产品的类型如何:公寓?
然后,如果我能够获得每间公寓的参考,我该如何构建该产品的详细信息?
我的意思是如何获得所有者的姓名,姓名,价格,城市等?
答案 0 :(得分:1)
您在数据结构中显示的是索引。
您通常还会有一个列表,其中包含每个属性的主副本:
"properties": {
"xx1": {
"city": "Teyran",
"owner": "Jean Duparc",
"price": 405000,
"type": "home",
},
"xx2": {
"city": "Montpellier",
"owner": "Henry Dupont",
"price": 100000,
"type": "apartment",
},
"xx3": {
"city": "Montpellier",
"owner": "John Wood",
"price": 122000,
"type": "land",
}
}
现在使用我们的索引和上述结构,您可以查看公寓:
ref.child('type').child('apartment').on('value', function(keys) {
keys.forEach(function(keySnapshot) {
ref.child('properties').child(keySnapshot.ref().key()).once('value', function(propertySnapshot) {
console.log(propertySnapshot.val());
});
});
})
要更新媒体资源,请使用multi-location update。例如,更新xx1
的所有者:
var updates = {};
updates['/properties/xx1'] = property;
updates['/owners/Jean Duparc/'+id] = null;
updates['/owners/Runfast Webmaster/'+id] = true;
ref.update(updates);