在Firebase android中编写数组
我正在尝试将此内容写入我的 Firebase
父母
--0 : 约翰
--1 : 蒂姆
--2 : 山姆
--3 : 本
我正在这样做
String[] names = {"John","Tim","Sam","Ben"};
myFirebaseRef.setValue(names);
它没有写任何东西。
它使用Chrome Console for Firebase工作。
这难道不是你写一个数组到firebase的方式吗?
谢谢
我正在尝试将此内容写入我的 Firebase
父母
--0 : 约翰
--1 : 蒂姆
--2 : 山姆
--3 : 本
我正在这样做
String[] names = {"John","Tim","Sam","Ben"};
myFirebaseRef.setValue(names);
它没有写任何东西。
它使用Chrome Console for Firebase工作。
这难道不是你写一个数组到firebase的方式吗?
谢谢
该方法需要 一个 而不是 一个 ..setValue()ListArray
此方法接受的值的本机类型对应于 JSON 类型:布尔型、长整型、双精度型、映射、字符串、对象、列表、对象...
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);
但是,我建议使用 a 而不是 .您可以使用名称作为键,而不是基于索引的键(1,2,3...),以便于检索。MapList
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) {
}
});
我不确定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 下添加新用户,请调用:users
SaveWholeData("users", oUserInfo, true);
并更新现有用户:
SaveWholeData("users"+"/"+ oUserInfo.genKey, oUserInfo, true);