2016-11-02 28 views
1

有一些EDITTEXT,允許用戶輸入數據:我如何正確巢數據並寫入火力

AppName 
Date 
Title 
Quantity 
User 

我開始了新的火力地堡的項目,目前它是一片空白。

我建立我的火力地堡的情況下是這樣的:

private DatabaseReference mDatabase; 
mDatabase = FirebaseDatabase.getInstance().getReferenceFromUrl("https://myapp.firebase.io"); 

我多麼希望它是每次新加入時,我想補充像這樣(appname是共同點所有條目) :

AppName 
    Date 
    Title 
    Quantity 
    User 

    Date 
    Title 
    Quantity 
    User 
    ... 
    ... 

AppName 
    Date 
    Title 
    Quantity 
    User 

    Date 
    Title 
    Quantity 
    User 
    ... 
    ... 

我怎樣才能做到以下幾點:

的第一次加時,AppName的將是父節點,01火力地堡後應隨時檢查,看看是否父節點存在 並且是相同的,並將其添加到,否則,創建一個新的父節點 和孩子節點添加到新的父節點。

目前,我有我的身份驗證設置是這樣的:

{ 
    "rules": { 
    ".read": "auth != null", 
    ".write": "auth != null" 
    } 
} 

我不得不改變,以true我的應用程序寫入火力地堡。

如何我:

無法註冊用戶,但只允許應用能夠寫入 火力地堡。

編輯:

我做了以下內容:

mDatabase.child("AppName").setValue(etName.getText().toString()); 
mDatabase.child("AppName").child("Date").setValue(etDate.getText().toString()); 
mDatabase.child("AppName").child("Title").setValue(etQuantity.getText().toString()); 
mDatabase.child("AppName").child("Quantity").setValue(User.getText().toString()); 
mDatabase.child("AppName").child("User").setValue(etUser.getText().toString()); 

反而增加的,是覆蓋以前的條目。我怎樣才能追加。

+0

因此,將規則更改爲「真」,它的工作。但是,如何格式化上面顯示的數據呢? – Si8

+1

當添加數據時,firebase會自動檢查父節點是否存在。如果沒有,它會創建新的節點。 –

+0

所以我得到它的工作,但它只是覆蓋以前的條目,而不是追加... – Si8

回答

1

如果我理解你,你需要的不是註冊用戶可以在火力地堡編輯你的數據庫,以及如何知道你是否添加了一個ID。

首先,作爲依禪費爾南多說,如果你用相同的ID添加數據,該數據將被overwrited,並使用推送方法,火力地堡將創建一個新聞中心ID來將數據添加

閱讀:https://firebase.google.com/docs/database/android/read-and-write?hl=en

這吉斯特,由於用戶realgt,可以幫助你知道,如果APPNAME存在與否:https://gist.github.com/anantn/4323949#gistcomment-998628 這將讓所有的數據,你可以檢查是否需要添加或不

而且,如果你不想註冊用戶,但你需要他們寫的數據庫,我認爲你需要將它們註冊爲匿名用戶: https://firebase.google.com/docs/auth/android/anonymous-auth

火力地堡需要註冊用戶(使用社交網絡,電子郵件或匿名)修改它,所以嘗試匿名方法。問題是,當用戶離開你的應用程序,這個用戶將保持註冊在你的數據庫。所以,我建議你(如果我錯了,請糾正我)在onStop啓動時擦除用戶,並在onReady啓動時再次創建它。

我希望它有幫助。