Java 如何检查firebase数据库中的愿望列表数据是否为空

Java 如何检查firebase数据库中的愿望列表数据是否为空,java,android,Java,Android,我想检查用户UID下的“愿望列表”是否为空,因为如果“愿望列表”为空,我将在其中创建“愿望列表2”。如何检查firebase数据库中的此“愿望列表”是否为空 概念是这样的-检查愿望列表是否为空,如果愿望列表为空,则我将在数据库中创建另一个愿望列表2。愿望列表不是默认值,仅当用户在愿望列表中添加例如项目1,然后如果用户已添加d愿望列表中的项目1。我将为他的项目2创建愿望列表2 这是我的密码 public class web_view extends AppCompatActivity {

我想检查用户UID下的“愿望列表”是否为空,因为如果“愿望列表”为空,我将在其中创建“愿望列表2”。如何检查firebase数据库中的此“愿望列表”是否为空


概念是这样的-检查愿望列表是否为空,如果愿望列表为空,则我将在数据库中创建另一个愿望列表2。愿望列表不是默认值,仅当用户在愿望列表中添加例如项目1,然后如果用户已添加d愿望列表中的项目1。我将为他的项目2创建愿望列表2

这是我的密码

public class web_view extends AppCompatActivity {
    //for fav
    FloatingActionButton fab;

    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_v);

        //fab start here
        
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String passURL = getIntent().getStringExtra("key");
                if (passURL.matches("[0-9]+") && passURL.length()>= 10){ ////if fav book input is ISBN number
                    FirebaseDatabase.getInstance().getReference("Users")
                            .child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child("Wishlist")// which child goes to under the current user UID
                            .setValue("http://www.librarything.com/isbn/" + passURL).addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {
                            if(task.isSuccessful()){
                                Toast.makeText(web_view.this, "Saved to Wishlist", Toast.LENGTH_LONG).show();
                            }
                        }
                    });
                }else {//if wish list book is no ISBN
                    Toast.makeText(web_view.this, "Can't Save", Toast.LENGTH_LONG).show();
                }
            }
        });
}
}
公共类web\u视图扩展了AppCompative活动{
//对于fav
浮动操作按钮;
私有网络视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u web\u v);
//从这里开始
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
字符串passURL=getIntent().getStringExtra(“键”);
if(passURL.matches(“[0-9]+”)&&passURL.length()>=10){///如果fav图书输入是ISBN编号
FirebaseDatabase.getInstance().getReference(“用户”)
.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child(“Wishlist”)//当前用户UID下的哪个子项
.setValue(“http://www.librarything.com/isbn/“+passURL).addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Toast.makeText(web_view.this,“保存到愿望列表”,Toast.LENGTH_LONG.show();
}
}
});
}else{//如果愿望清单书不是ISBN
Toast.makeText(web_view.this,“无法保存”,Toast.LENGTH_LONG.show();
}
}
});
}
}

好的,您可以使用
.push()
自动为愿望列表中的每个元素生成ID。因此,您可以这样做:

DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("Users").child(FirebaseAuth.getInstace().getCurrentUser().getUid()).child("Wishlist");
myRef.push().setValue(newWishlistString);
DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("Users").child(FirebaseAuth.getInstace().getCurrentUser().getUid()).child("Wishlist");

myRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot snapshot) {
               //do something here with data
    }

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

    }
});
这将在Firebase中生成如下内容:

然后您可以像这样检索它:

DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("Users").child(FirebaseAuth.getInstace().getCurrentUser().getUid()).child("Wishlist");
myRef.push().setValue(newWishlistString);
DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("Users").child(FirebaseAuth.getInstace().getCurrentUser().getUid()).child("Wishlist");

myRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot snapshot) {
               //do something here with data
    }

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

    }
});

当您在firebase数据库中创建该对象时,默认情况下它是否有一个愿望列表字段?该字段的值是多少?因此,当您在数据库中创建您的用户,而他没有愿望列表时,您是否创建该字段并传递该值?如果没有,则应放置值:null。然后当您获取该值时,检查它是否为空,并执行您需要执行的操作。概念如下-检查愿望列表是否为空,如果愿望列表为空,则我将在数据库中创建另一个愿望列表2。愿望列表不是默认值,仅当用户添加例如愿望列表中的项目1时才会创建然后,如果用户已经在愿望列表中添加了项目1,我将为他的项目2@slothcoding创建愿望列表2。您一直说“如果愿望列表为空,那么我将创建另一个愿望列表。”“,但你是说如果它不是空的?因为在您的情况下,愿望列表永远不会为空,因为它是用户创建的字段,并且总是有值?如果愿望列表不为空,项目1将转到愿望列表1。这不是用户创建的字段,它只会在用户添加某些项目时创建,因为它不是用户信息。获得它谢谢:D@SlothCoding