我的Firebase数据库看起来像这样
我希望通过查询数据并比较event_user_image
的值来更改event_username
值。
我的代码看起来像这样
final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference dr = database.getReference().child("ApprovedEvents");
dr.orderByChild("event_user_name").equalTo("username");
dr.child("event_user_image").setValue("https://lh4.googleusercontent.com/aaaaaaaaaaaaaaaa/photo.jpg");
相反,它在Approved Events下创建一个单独的值。 请帮忙!
答案 0 :(得分:1)
您的DatabaseReference指的是 ApprovedEvents ,当您为 event_user_image 设置值时,它会像这样:
ApprovedEvents
---Record 1
---Record 2
.
.
.
---event_user_image
您要做的是更改特定记录的 event_user_image 。
要做到这一点,首先必须使用特定用户名查询记录,如下所示:
final FirebaseDatabase database = FirebaseDatabase.getInstance();
final DatabaseReference dr = database.getReference().child("ApprovedEvents");
Query query = dr.orderByChild("username").equalTo("yourUsername");
然后你可以使用一个监听器来查看是否会有使用该特定用户名查询的对象,然后获取他们的密钥,以便您可以将其添加到更新路径中:
query.addChildEventListener(
new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
//dr would refer to path : ApprovedEvents
//adding the key as a child would make it : ApprovedEvents/Record1
dr.child(dataSnapshot.getKey()).child("event_user_image").setValue("yourDesiredValue");
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
});