在Firebase android中编写数组

我正在尝试将其写入我的Firebase

– 0:约翰

– 1:Tim

– 2:山姆

– 3:本

我正在这样做

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

而不是写任何东西。

它使用Firebase的Chrome控制台。

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

谢谢

Solutions Collecting From Web of "在Firebase android中编写数组"

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

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

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

但是,我build议使用一个Map而不是一个List 。 而不是有一个基于索引的键(1,2,3 …),您可以使用该名称作为键,这样更容易检索。

 Firebase ref = new Firebase("<my-firebase-app>/names"): HashMap<String, String> names = new HashMap()<String, String>; names.put("John", "John"); names.put("Tim", "Tim"); names.put("Sam", "Sam"); names.put("Ben", "Ben"); ref.setValue(names); 

而现在如果你想检索数据,你只需要知道名称。

 Firebase ref = new Firebase("<my-firebase-app>/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应用程序,您可以使用如下所示的内容:

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

  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; } } 

因此,要在根用户添加新用户 ,请致电:

 SaveWholeData("users", oUserInfo, true); 

更新现有用户

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