提问者:小点点

存在Firebase Android检查子项


我有这个代码:

  listener = (ValueEventListener) profile.child("db/auth/user/" + auth.getCurrentUser().getUid()).addValueEventListener(new ValueEventListener() {

     @Override

     public void onDataChange(DataSnapshot dataSnapshot)

     {

if(dataSnapshot.child("value2").exists()) {

             
         } else{

             profile.child("value2").setValue("value");

         }

它检查子值2是否存在于数据库中。如果他验证他不存在,他立即创建那个值。

但是,当该子级存在并且具有不同的值(示例value2:value3)时,它只是再次创建具有值“value”的子级。换句话说,它取代了值。

有人知道有没有什么解决办法吗?


共1个答案

匿名用户

快照包含了Firebase上整个数据的引用,因此您需要像这样检查

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
      @Override
      void onDataChange(DataSnapshot snapshot) {
        if (snapshot.hasChild("value2")) {
          // run some code
        }else{
          profile.child("value2").setValue("value");
        }
      }
    });