gpt4 book ai didi

android - Firebase 在检查数据是否存在时始终为真

转载 作者:搜寻专家 更新时间:2023-10-30 22:28:15 24 4
gpt4 key购买 nike

我想检查当前 2 个引用中的数据是否存在,但它似乎总是返回 true(总是第一个 Toast),我认为没有检查 URL_CARS 和 URL_PLANES 是否存在,这就是我所拥有的:

mDatabase.child("Users").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child("URL_CARS").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(final DataSnapshot dataSnapshotCars) {
mDatabase.child("Users").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child("URL_PLANES").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshotPlanes) {

if (dataSnapshotCars!=null && dataSnapshotPlanes!=null) {
Toast.makeText(LoginActivity.this, "DATA EXISTS", Toast.LENGTH_SHORT).show();

}else{
Toast.makeText(LoginActivity.this, "Data DOSNT EXISTS", Toast.LENGTH_SHORT).show();
}
}

@Override
public void onCancelled(DatabaseError databaseError) {}
});

数据库结构

Users +_
-L4K1JDJS4K2599SK3+_
URL_CARS:
URL_PLANES:

最佳答案

当您尝试读取数据时,Firebase 将始终返回一个快照,并且它永远不会为空。因为 Datasnapshot 对象包含两个属性:keyvalue,所以它类似于 Datasnapshot(key, value)。当您根据某个键查询数据库时,该值可能不存在(您的情况)但您已将键传递给该 Datasnapshot 对象(这意味着该键存在)。因此,您返回的 Datasnapshot 类似于:Datasnapshot(key="URL_PLANES", value=null)。这意味着 datasnapshot!=null 将始终为真。

您可以改为使用 exists() 方法检查值是否存在:

@Override
public void onDataChange(DataSnapshot dataSnapshotPlanes) {

if (dataSnapshotCars.exists() && dataSnapshotPlanes.exists()) {
Toast.makeText(LoginActivity.this, "DATA EXISTS", Toast.LENGTH_SHORT).show();

}else{
Toast.makeText(LoginActivity.this, "Data DOSNT EXISTS", Toast.LENGTH_SHORT).show();
}
}

或者获取快照值然后检查它是否不为空:

@Override
public void onDataChange(DataSnapshot dataSnapshotPlanes) {

if (dataSnapshotCars.getValue()!=null && dataSnapshotPlanes.getValue()!=null) {
Toast.makeText(LoginActivity.this, "DATA EXISTS", Toast.LENGTH_SHORT).show();

}else{
Toast.makeText(LoginActivity.this, "Data DOSNT EXISTS", Toast.LENGTH_SHORT).show();
}
}

关于android - Firebase 在检查数据是否存在时始终为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48190268/

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