2016-11-27 53 views
0

我已經能夠推送新信息並在數據庫中調用它,但我一直在尋找幾天,現在我似乎無法找到任何東西。在Firebase網絡應用程序中同時更新和添加新的Firebase子節點

我期待能夠更新已有值的節點並添加新節點(如果沒有)。誰能幫我這個。 Firebase新手。

感謝

代碼:

function userProfileUpdate(users) { 

       newUsername = document.getElementById("newUsername"); 

       // Profile Update. 
       var user = { 
       username : newUsername.value 
       }; 

       return firebase.database().ref().update(user); 
      }; 
+0

添加數據應該像'ref.setValue({name:「user3411711」})'一樣簡單。聽起來你已經嘗試了一些東西。如果您共享[重現您卡住的最小代碼](http://stackoverflow.com/help/mcve),則幫助起來會更容易。 –

+0

是的,我嘗試了幾種方法。 – user3411711

+0

感謝您的更新。這段代碼有什麼問題?它運行嗎?你是否在調試器中完成它? JavaScript控制檯中是否有錯誤? –

回答

1

從您的意見似乎要存儲在數據結構類似這樣的用戶信息:

users 
    uid1 
     userName: "Frank van Puffelen" 

要添加特定用戶這個結構,你會這樣做:

function userProfileUpdate(users) { 
    var user = firebase.auth().currentUser; 
    var root = firebase.database().ref(); 

    newUsername = document.getElementById("newUsername"); 

    var user = { 
     username : newUsername.value 
    }; 

    return root.child('users').child(user.uid).set(user); 
}; 

更新

update a specific property of a specific user

Map<String, Object> updates = new HashMap<String,Object>(); 
updates.put("username", newUsername.value); 
root.child('users').child(user.uid).updateChildren(user); 

或者:

root.child('users').child(user.uid).child("username").setValue(newUsername.value); 

既會自動創建的位置,如果不存在了。

+0

是的結構是正確的。我得到這個錯誤:Firebase.child失敗:第一個參數是一個無效路徑:「未定義」與您的更新代碼。 – user3411711

+0

不知道這是否重要,但我的用戶名是用戶名而不是用戶名 – user3411711

+0

最有可能'user.uid'在您的方案中未定義。請在調試器中遍歷代碼,並檢查'user'是否有值,如果是'user.uid'。堆棧溢出是遠程調試東西的糟糕機制。 –

1

弗蘭克代碼帶走了整個關鍵,但我做了這個

var user = firebase.auth().currentUser; 
     var root = firebase.database().ref(); 

     newUsername = document.getElementById("newUsername"); 

     firebase.database().ref('users/' + user.uid).update({ 
      username: newUsername.value 
      }); 

感謝弗蘭克你推我在正確的方向搞清楚。

相關問題