gpt4 book ai didi

android - Firebase OrderByChild() 和 EqualTo() 无法正常工作

转载 作者:行者123 更新时间:2023-11-30 05:06:06 24 4
gpt4 key购买 nike

我需要在 Random Key 中找到现有的 Child,我已经使用 OrderByChild() 和 EqualTo() 来过滤查询,但它的行为太奇怪了,有时它显示 child 只存在于一个 Child,有时它不存在工作。

Firebase Structure

我需要检查“February_2019”的 child (date_expense) 是否存在?我试过了

主 Activity

databaseReference = firebaseDatabase.getReference("Expenses_Details");
expensesaddref = databaseReference.child(username).child("Expense_Month").child(monthyr);
int currentInt=Integer.parseInt(currentdate);
numberToWord((currentInt % 100));
Log.d("date_string",String.valueOf(dateString));
final String date_expense=expensesname +"" + dateString;
final ExpenseClass expenses=new ExpenseClass(expensesname,currentdate,date_expense,totalcost);

expensesaddref.orderByChild("date_expense").equalTo(date_expense).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
Toast.makeText(getContext(), "Expense Already exists!!", Toast.LENGTH_SHORT).show();
}
else {
String key = expensesaddref.push().getKey();
expensesaddref.child(key).setValue(expenses);
showListAdd(expensesname);
Log.d("Adding", "Data Adding");
}





}


@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
}}

注意

如果 child 已经存在于 db 中,那么它应该显示 toast,但是即使 child 已经存在 db 中,费用也会再次增加

在程序中,

monthYr 是 February_2019

Currentdate 是当前日期

dateString 是单词中的日期(即一、十一、二十)

这是我得到的 Firebase 结构。date_expense 正在添加,即使 child 已经存在 enter image description here

最佳答案

我发现下面的代码可以满足我的需要

ValueEventListener valueEventListener=new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
boolean isTitleAlreadyUsed = false;

for (DataSnapshot ds: dataSnapshot.getChildren()) {

if (ds.hasChild("date_expense") && (expDate.equals(ds.child("date_expense").getValue()))) {
isTitleAlreadyUsed = true;
}
}
if(isTitleAlreadyUsed){
Toast.makeText(getContext(),"Exist",Toast.LENGTH_SHORT).show();
}else
{
String key=expensesaddref.push().getKey();
expensesaddref.child(key).setValue(expenseClass);
showListAdd(lower_exp);
Toast.makeText(getContext(),"Added",Toast.LENGTH_SHORT).show();
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
};
expensesaddref.addListenerForSingleValueEvent(valueEventListener);

关于android - Firebase OrderByChild() 和 EqualTo() 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54576761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com