似乎无法理解Firebase的JSON表

时间:2016-05-20 17:32:06

标签: android json firebase firebase-realtime-database

我们说我有这个JSON树:

"employees":[
    {"firstName":"John", "lastName":"Doe"},
    {"firstName":"Anna", "lastName":"Smith"},
    {"firstName":"Peter","lastName":"Jones"}
]

我如何在Firebase中执行此操作?每当我在" employees"下创建一个名为" firstname"的对象时,它用" Firstname"替换上一个对象。

我之前使用过Parse的表格,但由于它被删除了,所以我需要帮助来学习这个令人困惑的事情。

我正在使用Android。

2 个答案:

答案 0 :(得分:1)

您可能正在寻找DatabaseReference.push(),这会在该位置下创建一个新的孩子。

var employeesRef = mDatabase.child("employees");
var newEmployeeRef = employeesRef.push()
newEmployeeRef.setValue(employee);

阅读更多相关信息的最佳位置请参阅appending data to a list in the Firebase documentation部分。

答案 1 :(得分:1)

Firebase数据库对列表或数组没有本机支持。如果我们尝试存储列表或数组,它实际上存储为一个“对象”,整数作为键名(see doc)。

{"employees":{
        0:{"firstName":"John", "lastName":"Doe"}, 
        1:{"firstName":"Anna", "lastName":"Smith"}, 
        2:{"firstName":"Peter","lastName":"Jones"}
    }
}

通过这种方式,firebase中的树将如下所示:

push()

使用Firebase术语我们可以说节点emloyees有三个子节点,ID分别为0,1,2。

但不建议在Firebase中使用整数ID保存数据(see this to know why)。 Firebase提供//create firebase ref using your firebase url Firebase ref = new Firebase("https://docs-examples.firebaseio.com/android/saving-data/fireblog"); Firebase postRef = ref.child("posts"); Map<String, String> post1 = new HashMap<String, String>(); post1.put("author", "gracehop"); post1.put("title", "Announcing COBOL, a New Programming Language"); postRef.push().setValue(post1); Map<String, String> post2 = new HashMap<String, String>(); post2.put("author", "alanisawesome"); post2.put("title", "The Turing Machine"); postRef.push().setValue(post2); 功能,每次将新子项添加到指定的Firebase参考时,该功能都会生成唯一ID。

以下是Firebase Android文档中的示例:

{
  "posts": {
    "-JRHTHaIs-jNPLXOQivY": {
      "author": "gracehop",
      "title": "Announcing COBOL, a New Programming Language"
    },
    "-JRHTHaKuITFIhnj02kE": {
      "author": "alanisawesome",
      "title": "The Turing Machine"
    }
  }
}

因此,在帖子节点中,我们将有两个具有自动生成ID的子项:

{{1}}