我是firebase和Json的新手,所以有一些基本的麻烦。我在Firebase中的Json文件是这样构建的:
{
"workout" : {
"Heavy Chest and Arms" : [ "Bench press", "Incline Dumbbell Press", "Cable Crossover", "Bicep Barbell Curls", "Alternate Dumbbell Curls", "Preachers Curls", "V-Bar Triceps Extensions", "Skull Crushers", "Sitting Calf raises" ],
"Light Back and Shoulders" : [ "Pull Ups", "Chins", "Cable Rows", "Lateral Pulldowns", "Dumbbell Rows", "Reverse Flies", "Arnold Press", "Side Raises", "Front Raises", "Rotary Cuffs" ]
}
}
首先,我想要列出所有锻炼的清单,该清单将包含重型胸部和手臂"," Light Back和肩膀"。在那之后,我想把这些列表中的所有元素(孩子?),示例" Bench press"," Incline Dumbell press"我试了好几次几个小时,现在正在尝试这个:
myFirebaseRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> messages = dataSnapshot.getValue();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
答案 0 :(得分:2)
这里有一个更好的结构让你去
workouts
workout_id_0
category: "Heavy Chest and Arms"
elements
element_id_0: true
element_id_1: true
workout_id_1
category: "Light Back and Shoulders"
elements
element_id_0: true
elements
element_id_0
name: "Bench press"
description: "While laying flat on your back, arms at 90 degrees etc"
element_id_1
name: "Incline Dumbbell Press"
description: "Incline the backboard 30 degrees and etc etc"
你可以用这种结构做一些活泼的事情:
假设您想在重型胸部和轻型背部训练中加入卧推。此结构使您可以重复使用元素。
从现在开始,您想要将Bench press的名称更改为Bench Press SUPER DUPER。您只需更改名称:在element_id_0中并且该名称将落实到位
您可以轻松查询哪些锻炼包括element_id_1,Incline哑铃按压
您可以轻松更改锻炼的名称。而不是Light Back和Shoulders,它可以是Light Lower Back和Shoulders,只需改变一个子节点。
您应该进一步考虑如何使用您的数据;你是否需要找到适合腿部的所有元素并根据这些元素创建锻炼?您需要查询或添加其他数据吗?
打印出所有锻炼类别名称:
ref.on("child_added", function(snapshot, prevChildKey) {
var workout = snapshot.val();
console.log("Category: " + workout.category);
//the element references are here too! elements = workout.elements
});
获取每个锻炼的元素名称需要一些代码,但这应该让你去。
答案 1 :(得分:0)
Firebase是NoSQL数据库,因此不应被视为规范化的SQL数据库。
过度简化以您想要检索数据的方式存储数据,即使这意味着在不同的地方保存相同的数据。
如果您想要检索锻炼列表,请使用仅包含锻炼名称的锻炼名称对象(例如,重胸和手臂,浅背和肩膀)。然后,如果要检索子元素,请从另一个与问题中提供的对象匹配的对象执行此操作。
一些good reading来巩固这个想法。