2016-07-26 112 views
0

我目前正在开发一个android应用程序,其中我使用firebse作为数据库。 我想选择一个特定的节点并设置它的密码,所以我该怎么做? 我使用此代码,但它将另一个密码属性添加到选定的节点。 这是数据库结构,我想设置用户toto的密码值。从firebase中选择数据

enter image description here

public void resetPassword(){ 
    //setting connexion parameter 
    final Firebase ref = new Firebase("https://test.firebaseio.com/users"); 
    Query query = ref.orderByChild("username").equalTo("toto"); 


    Firebase statusRef =query.getRef().child("password"); 
    statusRef.setValue("COMPLETED"); 



    System.out.println("Hellooooo FBM  "); 
} 
+2

你可能不应该存储在用户节点中的口令,因为火力点有一个整体的功能来处理身份验证。 – adolfosrs

回答

1

query还没有匹配查询的节点。要获得匹配的节点,您必须附加一个侦听器(如documentation on reading data所示)。

一个简单的例子:

public void resetPassword(){ 
    //setting connexion parameter 
    final Firebase ref = new Firebase("https://test.firebaseio.com/users"); 
    Query query = ref.orderByChild("username").equalTo("toto"); 

    query.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot snapshot) { 
      for (DataSnapshot user: snapshot.getChildren()) { 
      Firebase statusRef = user.child("password").getRef(); 
      statusRef.setValue("COMPLETED"); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      Log.w(TAG, "getUser:onCancelled", databaseError.toException()); 
     } 
    }); 
} 
+0

thx很多:)它的工作:) –