gpt4 book ai didi

java - Android studio Firebase数据库查询选中值

转载 作者:行者123 更新时间:2023-11-30 05:10:09 26 4
gpt4 key购买 nike

我在尝试查询我的数据库中的某些信息时遇到问题,下图恢复了我正在尝试获取的信息,我正在尝试获取“productId”

这是我的数据库的样子:

/image/JhJNs.png

其实我是想获取这个值,为了给它加上条件。我正在尝试发送通知,仅当选择了 productId = 02 时,这是我的代码

if (request.getFoods().isEmpty()) {
Toast.makeText(Cart.this, "Your cart is empty", Toast.LENGTH_SHORT).show();
} else{

final DatabaseReference tokens = FirebaseDatabase.getInstance().getReference("Requests");
final Query data = tokens.orderByChild("productId").equalTo("02"); // get all node with isServerToken
data.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

String order_number = String.valueOf(System.currentTimeMillis());
requests.child(order_number).setValue(request);

sendNotificationOrder(order_number);
Toast.makeText(Cart.this, "Notification sent", Toast.LENGTH_SHORT).show();

}
@Override
public void onCancelled(DatabaseError databaseError) {

}
});

谢谢你的帮助!

最佳答案

实际上,您上面的代码不能像那样与 orderByChild() 一起使用。如果您的 foods 节点中有多个项目,它们的父节点为 01 等等,并且您想检查它们的 productId,那么只能这样了。

为此,您必须让父子foods 并对其调用orderByChild(),以获得productId。代码看起来像这样:

final DatabaseReference tokens = FirebaseDatabase.getInstance().getReference("Requests").child(id).child("foods");

tokens.orderByChild("productId").equalTo("02").addSingleValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// do what you want



}
@Override
public void onCancelled(DatabaseError databaseError) {
// Do something for errors, don't ignore
}

但是,如果您的数据库结构具有不同的父节点,并且它与您要从中检索数据的节点之间还有一个中间节点,那么上面的代码将无法使用。

了解更多关于如何使数据库结构适合orderByChild() here.

关于java - Android studio Firebase数据库查询选中值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53874439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com