如何检查火灾中是否存在儿童?

时间:2015-04-02 00:18:23

标签: android firebase firebase-realtime-database

我有一个firebase,它有一个名为users的节点。用户提供用户名,我想检查该用户名是否已作为用户节点的子节点存在。这是我目前正在尝试的代码。该平台是android。

String myUsername = userNameInputET.getText().toString();
if(mUsersRef.child(myUsername) == null) {
//do stuff
} else {
//do other stuff
}

此代码无效,即使具有给定用户名的子节点不存在,也始终转到else。怎么办?

4 个答案:

答案 0 :(得分:0)

{{1}}

答案 1 :(得分:0)

你好检查这个https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot

// Test for the existence of certain keys within a DataSnapshot
var ref = firebase.database().ref("users/ada");
ref.once("value")
  .then(function(snapshot) {
    var a = snapshot.exists();  // true
    var b = snapshot.child("name").exists(); // true
    var c = snapshot.child("name/first").exists(); // true
    var d = snapshot.child("name/middle").exists(); // false
  });

答案 2 :(得分:0)

在这个问题上浪费了两个小时。尝试了一切,但没有一个解决方案奏效。 我使用了firebase onChildAdded的数据读取代码来获取用户数据,然后使用if else条件确定它。

在onCreate

mFirebaseDatabase=FirebaseDatabase.getInstance();
mMessagesDatabaseReference=mFirebaseDatabase.getReference().child("user").child(root).child(id);
    attachDatabaseReadListener();

听众方法

    private void attachDatabaseReadListener() {
    if ( mChildEventListener == null) {
        mChildEventListener = new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                User u = dataSnapshot.getValue(User.class);
                mUser=u.GetUser();
                mEmail=u.GetEmailId();
                Toast.makeText(getApplicationContext(),"here"+mUser,Toast.LENGTH_SHORT).show();
            }
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {}
            public void onChildRemoved(DataSnapshot dataSnapshot) {}
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {}
            public void onCancelled(DatabaseError databaseError) {}
        };
        mMessagesDatabaseReference.addChildEventListener( mChildEventListener);

    }
}

状态检查,它可以是任何东西。

 if(mUser==null&&mEmail==null) {
      //do something here
  }
 else
 {
 //do nothing
 }

注意:在添加的子项上执行时需要一些时间,因此请添加适当的延迟 我只有一个Node,所以这段代码对我来说非常合适。如果有其他解决方案或更简单的解决方案,请告诉我们。

  

如果根节点不存在,那么它也将显示为null,因此在部署应用程序推送根节点之前请记住这一点。

答案 3 :(得分:-3)

我认为您需要将代码更改为

int maxSize = 100;
ConcurrentSkipListMap<String, String> cache = new ConcurrentSkipListMap<>();

// Check if max size is reached before inserting something in it. Make some room for new entry.
while (cache.size() >= maxSize) {
    cache.pollFirstEntry();
}