[英]Firebase Deleting A Value
我正在使用 Firebase 使用 Android Studio 開發應用程序。 我想刪除某個日期,但是當我單擊刪除按鈕時,它什么也不做。 我無法聯系到父母,因為它是生成的密鑰。 任何幫助,將不勝感激。
private void deleteDate(){
String dateValue = showDate.getText().toString();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userid = user.getUid();
DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference().child("Users").child(userid).child("smokeFreeDays");
usersRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
for (DataSnapshot userDataSnapshot : snapshot.getChildren()) {
String date = userDataSnapshot.getValue(String.class);
if (date.equals(dateValue)) {
snapshot.getRef().child(dateValue).removeValue();
} else if (!date.equals(dateValue)) {
snapshot.getRef().child(dateValue).removeValue();
}
}
}
@Override
public void onCancelled(@NonNull @NotNull DatabaseError error) {
Log.w("tag", "loadPost:onCancelled", error.toException());
}
});
}
我的數據庫:
請參閱我上面的評論以調試問題。
但作為一個整體提示,我建議重新考慮smokeFreeDays
下的數據結構,使其看起來像這樣:
"smokeFreeDays": {
"2021-05-09": true,
"2021-05-10": true
}
這種結構的兩個變化:
year-month-day
,更適合查詢。 例如,您可以通過usersRef.orderByKey().startAt("2021-").endAt("2021~")
獲得 2021 年的所有無煙日。smokeFreeDays
來查找要刪除的值。 一旦知道日期,您現在可以刪除節點: usersRef.child("2021-05-09").removeValue()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.