2017-05-03 40 views
1

我試圖從一個節點在我的數據庫中添加數據(組/的groupId /匹配)到另一個節點(用戶/用戶名/組)火力地堡DB數據拷貝一個節點到另一個

此方法執行一次完美的,但如果我嘗試執行我第二次在麻煩運行,收到此錯誤

com.google.firebase.database.DatabaseException: 
Failed to convert value of type java.lang.String to boolean 

從使用火力地堡我已瞭解該的SetValue你應該覆蓋所有現有數據和我在我的應用程序看到這個

只是不確定我的下一步行動,任何幫助都非常感謝d。

方法調用

moveFirebaseRecord(groupsDatabase.child(firebaseUser.getUid()).child("matches"), 
          usersDatabase.child(uId).child("groups")); 

方法

public void moveFirebaseRecord(DatabaseReference fromPath, final DatabaseReference toPath) { 
    fromPath.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      toPath.setValue(dataSnapshot.getValue(), new DatabaseReference.CompletionListener() { 
       @Override 
       public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) { 
        if (databaseError != null) { 
         Toast.makeText(getApplicationContext(), "COPY FAILED", Toast.LENGTH_LONG).show(); 
        } else { 
         Toast.makeText(getApplicationContext(), "COPY SUCCESS", Toast.LENGTH_LONG).show(); 

        } 
       } 
      }); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      Toast.makeText(getApplicationContext(), "onCancelled- copy fail", Toast.LENGTH_LONG).show(); 

     } 
    }); 
} 

回答

0

「這種方法執行一次完美......」 是的addListenerForSingleValueEvent預期的行爲。來自文檔:

爲此位置的數據中的單個更改添加監聽器。這個監聽器將被觸發一次,並且該位置的數據值也會被觸發。

addValueEventListener聽起來更適合這種情況。

如果您始終需要將從groups/groupId/matches寫入的數據複製到users/userId/groups,那麼最好使用Firebase Cloud Function with a Realtime Database trigger代替。

+0

感謝您的回覆Jeff,我用addValueEventListener試過了,發生了同樣的錯誤。 我會看看雲功能來解決這個問題,我們建議我們使用雲功能來檢查節點中是否存在數據,以及是否將其複製過來? –

+0

是的,雲功能聽起來像是一個很好的解決方案。您的應用程序中的哪個位置是您的com.google.firebase.database.DatabaseException: 無法將類型爲java.lang.String的值轉換爲布爾值?哪條線路導致它? – Jeff

+0

我不確定哪一行導致它或它爲什麼它第一次工作,而不是後續嘗試(即使當我使用addValueEventListener) 我的Match類中有2個布爾值將被複制。所以也許這是造成這個問題的原因之一。當我嘗試將我的方法中的值記錄到控制檯時,並不十分清楚 –

相關問題