簡體   English   中英

在Firebase android中編寫數組

[英]Writing array in Firebase android

我正在嘗試將此內容寫入我的Firebase

- 約翰

- 1:蒂姆

- 2:山姆

- 3:本

我這樣做

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

而且它沒有寫任何東西。

它可以使用適用於Firebase的Chrome控制台。

這不是你寫一個數組到firebase的方式嗎?

謝謝

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

此方法為該值接受的本機類型對應於JSON類型: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);  

但是,我建議使用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應用程序,您可以使用如下內容:

我想創建一個可重用的函數來添加/保存根節點下的任何對象(即使它在對象中的任何級別都有一個數據數組) 所以我想出了這個。 (我不確定是否符合最佳實踐,但它的工作非常順利)

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

因此,要在根下添加新用戶 users ,您撥打:

SaveWholeData("users", oUserInfo, true);

更新現有用戶

SaveWholeData("users"+"/"+ oUserInfo.genKey, oUserInfo, true);
List sendingList = new ArrayList<>(Arrays.asList(SendingArray));

如果有任何錯誤,請按Alt + Enter 它會根據你的android studio版本糾正它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM