有数据结构:
categories
0 : category1,
1 : category2,
2 : category3
我想同时为此结构添加值。 看起来updateChildren()方法将用新的替换list。
Map<String, Object> childUpdates = new HashMap<>();
FirebaseDatabase.getInstance().getReference().updateChildren(childUpdates);
实施此操作的最佳做法是什么?
答案 0 :(得分:2)
这是不好的做法。 (要找出原因,请查看here )和。不使用0:
,1:
等,而是使用Firebase push()
方法。这会生成一个像-K9929EDDJDODAK939
这样的唯一键。您的结构将如下所示:
categories:
-K9929EFDADFAK939: category 1,
-DFADF9ADFFDF: category 2,
K99DF9EDDJDO9: category 3
为此,在将这些保存到数据库中时使用push()
方法,如下所示:
ref.child("categories").push().setValue(valueOrHasMap);
您不需要使用updateChildren()
,只需像我提到的那样保存它们。它将继续保存,不会取代任何现有的。
有关更多信息,您应该阅读docs,特别是在使用此方法时如何retrieve data。
有关在Firebase中避免使用阵列的更多信息:(感谢@Wiliks提供链接)Best Practices: Arrays in Firebase
答案 1 :(得分:0)
您应该更改您的数据结构,以便您的0,1,2,3等是INDEXES而不是键值对的KEY ...所以它看起来像:
categories:
0:
name:category1,
1:
name:category2,
2:
name:category3