在Firebase android中编写数组

我正在尝试将此内容写入我的Firebase

– 约翰

– 1:蒂姆

– 2:山姆

– 3:本

我这样做

String[] names = {"John","Tim","Sam","Ben"}; myFirebaseRef.setValue(names); 

而且它没有写任何东西。

它可以使用适用于Firebase的Chrome控制台。

这不是你写一个数组到firebase的方式吗?

谢谢

.setValue()方法需要List而不是Array

此方法为该值接受的本机types对应于JSONtypes:Boolean,Long,Double,Map,String,Object,List,Object …

 Firebase ref = new Firebase("/names"): String[] names = {"John","Tim","Sam","Ben"}; List nameList = new ArrayList(Arrays.asList(names)); // Now set value with new nameList ref.setValue(nameList); 

但是,我建议使用Map而不是List 。 您可以使用名称作为键,而不是使用基于索引的键(1,2,3 …),因此更容易检索。

 Firebase ref = new Firebase("/names"): HashMap names = new HashMap(); names.put("John", "John"); names.put("Tim", "Tim"); names.put("Sam", "Sam"); names.put("Ben", "Ben"); ref.setValue(names); 

现在,如果要检索数据,只需知道名称即可。

 Firebase ref = new Firebase("/names"): Firebase johnRef = ref.child("john"); johnRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot snapshot) { System.out.println(snapshot.value); // the String "John" } @Override public void onCancelled(FirebaseError firebaseError) { } }); 

有关更多信息,请阅读Firebase文档。

我不确定Java,但对于Web应用程序,您可以使用如下内容:

我想创建一个可重用的函数来添加/保存根节点下的任何对象(即使它在对象中的任何级别都有一个数据数组) 。 所以我想出了这个。 (我不确定是否符合最佳实践,但它的工作非常顺利)

  SaveWholeData: function(sKey, oVal, bGenKey) { bGenKey = bGenKey === undefined ? true: bGenKey; var oOriginalProperty = angular.copy(oVal); for (var property in oVal) { if (oVal.hasOwnProperty(property) && oVal[property] instanceof Array) { console.log(property); oVal[property] = "$|$"; } } var sOwnRef = SaveDataByKey(sKey, oVal, bGenKey); for (var property in oVal) { if (oVal.hasOwnProperty(property) && oVal[property] === "$|$") { oVal[property] = oOriginalProperty[property]; var updatedReference = sOwnRef + "/" + property; SaveWholeData(updatedReference, oVal[property], false); } } return true; }, SaveDataByKey: function(sKey, oVal, bGenKey) { if (bGenKey) { var newPostKey = firebase.database().ref(sKey).push().key; oVal.genKey = newPostKey; firebase.database().ref(sKey).child(newPostKey).set(oVal); return sKey + "/" + newPostKey; }else{ firebase.database().ref(sKey).set(oVal); return sKey; } } 

因此,要在root 用户添加新用户 ,请调用:

 SaveWholeData("users", oUserInfo, true); 

更新现有用户

 SaveWholeData("users"+"/"+ oUserInfo.genKey, oUserInfo, true);