我的目标是编辑"价格"在我的数据库中的推送ID下。我当前的代码不允许我编辑它,而是创建另一个推送ID。如何编辑它而不是创建未推送的ID?提前谢谢。
这是我编辑数据的代码:
String uid = currentUser.getUid();
prodidref = FirebaseDatabase.getInstance().getReference().child("Profile").child(uid).child("Products");
String prodid = prodidref.push().getKey();
databaseReference = FirebaseDatabase.getInstance().getReference().child("Products");
profdb = FirebaseDatabase.getInstance().getReference().child("Profile").child(uid).child("Products").child(prodid);
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String keyprice = "price";
String valueprice = ETPrice.getText().toString();
DatabaseReference child = profdb.child(keyprice);
child.setValue(valueprice);
}
});
这是我数据库的截图:
这是我当前代码的结果:
答案 0 :(得分:0)
我希望这对你有所帮助!
String uid = currentUser.getUid();
String pushKey;
prodidref = FirebaseDatabase.getInstance().getReference().child("Profile").child(uid).child("Products");
String prodid = prodidref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot : dataSnapshot.getChildren())
{
Log.d("kkkk activelink",""+snapshot.getKey());
pushKey = snapshot.getKey();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
profdb = FirebaseDatabase.getInstance().getReference().child("Profile").child(uid).child("Products").child(pushKey);
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String keyprice = "price";
String valueprice = ETPrice.getText().toString();
DatabaseReference child = profdb.child(keyprice);
child.setValue(valueprice);
}
});
答案 1 :(得分:0)
如果您不知道要修改的产品的密钥,则需要执行查询以查找该密钥。这意味着您必须了解可以查询的产品。例如。如果您尝试在Broccoli上设置20的价格,您可以运行查询以查找Broccoli并根据该更新进行更新:
DatabaseReference products = FirebaseDatabase.getInstance().getReference().child("Products");
Query broccolis = products.orderByChild("name").equalTo("Broccoli");
broccolis.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for(DataSnapshot broccoli: snapshot.getChildren()){
broccoli.getRef().child("price").setValue(20);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException()l
}
});