我设计了我的firebase数据库,如下所示。需要建议。并指导我哪个是离子2的最佳数据库...我对firebase完全是新的...提前谢谢..
我有月份,类别,实际预算金额和支出金额
[
{
"months": {
"month_1":"january",
"month_2":"Februrary",
"month_3":"March",
"month_4":"April"
},
"acutal": {
"acutal_amount_1":"2000",
"acutal_amount_2":"4000",
"acutal_amount_3":"4000"
}
"spent": {
"spent_amount_1":"1000",
"spent_amount_2":"2000",
"spent_amount_3":"3000"
}
"categories": {
"category_1": {
"categoryname":"Food",
"amounts": {
"acutal_amount_2":true,
"spent_amount_3":true
},
"months": {
"month_1":true,
"month_3":true,
"month_4":true
}
}
}
}
]
答案 0 :(得分:0)
处理firebase的关键是了解您需要在一个对象中保留哪些信息,以便在另一个树中查找有关它的更多信息。
虽然你可以这样做:
person:{
name: "rob",
gender: "male",
children: {
person: {
name:"maria",
gender:"female"
},
person: {
name:"maria",
gender:"female"
}
}
}
它可能不是最好的选择。你应该保持你的树像:
people: {
person:{
name: "rob",
gender: "male",
children: {
name:"maria",
name:"dasy"
}
},
person: {
name:"maria",
gender:"female"
},
person: {
name:"daisy",
gender:"female"
}
}
当您想知道孩子的性别时,请继续按照其名称进行过滤。
我想你应该读到这个:
https://firebase.google.com/docs/database/web/structure-data
他们在Firebase的文档中做得很好!
答案 1 :(得分:0)
因此,您需要了解Firebase的一件事是,您可以(并且必须)始终将所有内容保存在不同的节点中
因此,将所有数据放在一个用户节点中是一种不好的方法,如下所示:
userID
|_ months
|_ feb_2017
|_ expense_1
|_ expense data...
因为在检索用户数据时,例如,您将检索其节点下的所有内容,并且在使用它几个月后,用户可能需要加载一次。
所以,我们知道我认为它是您运行Firebase结构的最佳方式。
用户节点: 用户 | _ user_uid | _姓名:乔恩 | _ document:123456789 | _另一个数据......
用户节点只需要拥有用户数据,只需要您应用中的用户所需要的只是他的UID。他的UID,名称和其他所有内容都可以存储在本地,因此您不需要每次都在数据库中获取它。
user_months节点:
User_months
|_user_uid
|_ month_uid
|_ amount: 2000
|_ spent: 1800
|_ month: sep_2017
|_ other important things in general for the month expenses
user_months会将用户预算花费的所有月份分组,并保存当月的所有其他重要数据,例如他的金额,花费的金额,有关月份以及您需要的任何其他内容。
检索数据以填充月份列表时,您可以custom pipes分隔并返回要在标题中使用的完整月份名称。您将使用month_uid和expense_uid(我将接下来显示)Firebase中push() method返回的uid。您还可以通过查询firebase.database().ref('User_months/' + user.id).orderByChild('month').equalTo('sep_2017')...
expense_month节点:
Expenses_month
|_ user_uid
|_ month_uid (same from the user month)
|_ expense_uid (a new push())
|_ category: 'food'
|_ value: 34.55
|_ date: 2017/09/27 - 11:30AM
|_ description: ''
因此,在推新月时,您将获得关于push()回调的密钥并使用它来推送您当月的每笔费用。
如果您的类别节点类似于"用户或公司花在食物上的费用"我会惹你生气,但却要求那些食物是“食物”的孩子。并且他们在总计中添加值。
由于我不确切知道您的应用程序将如何运作,这是我能做的最好的事情,但总的来说,我认为这对您的应用程序非常有用。
希望这有帮助。