Java 如何在Firebase中将数据从一个表复制到另一个表?

Java 如何在Firebase中将数据从一个表复制到另一个表?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我有两张桌子——纸盒和餐具。CartoOrder用于将产品添加到购物车,当用户按下“下订单”按钮时,placedOrders被激活。 当用户单击“下订单”按钮时,我需要将数据从cartorder复制到placedOrders,但我无法这样做 cartDatabase = FirebaseDatabase.getInstance().getReference("cartOrders"); cartQuery = cartDatabase.child(orderID).orderByChild("p

我有两张桌子——纸盒和餐具。CartoOrder用于将产品添加到购物车,当用户按下“下订单”按钮时,placedOrders被激活。 当用户单击“下订单”按钮时,我需要将数据从cartorder复制到placedOrders,但我无法这样做

cartDatabase = FirebaseDatabase.getInstance().getReference("cartOrders");
cartQuery = cartDatabase.child(orderID).orderByChild("productQuantity").startAt(1);
placedOrdersDatabase = FirebaseDatabase.getInstance().getReference("placedOrders");
placedOrderQuery = placedOrdersDatabase.child("orderID");
placeOrderButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        cartDatabase.child(orderID).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                //Logic to add data to data to placedOrders.
                String name = dataSnapshot.child("productName").getValue(String.class);
                System.out.println("ProductName: " + name);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

        Intent intent = new Intent(getApplicationContext(), OrderPlacedActivity.class);
        intent.putExtra("ORDER_ID", orderID);
        startActivity(intent);
    }
});
在代码中,我检查代码是否从数据库中提取数据,但事实并非如此。输出为
null
。两个表具有相同的结构。 任何帮助都将不胜感激。 谢谢

我的cartOrders表结构:

cartOrders:
----------OrderID:
-----------------ProductID:
---------------------------ProductID:
---------------------------ProductName:
---------------------------ProductPrice:
---------------------------ProductQty:

@亚历克斯·马莫用另一个问题回答了这个问题

private void copyRecord(Query fromPath, final DatabaseReference toPath) {

        ValueEventListener valueEventListener = new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                toPath.setValue(dataSnapshot.getValue()).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {

                        if (task.isComplete()) {

                            System.out.println("Complete");

                        } else {

                            System.out.println("Failed");

                        }

                    }
                });

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        };

        fromPath.addListenerForSingleValueEvent(valueEventListener);

    }
private void copyRecord(查询fromPath,最终数据库引用toPath){
ValueEventListener ValueEventListener=新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
setValue(dataSnapshot.getValue()).addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.isComplete()){
系统输出打印项次(“完成”);
}否则{
System.out.println(“失败”);
}
}
});
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
};
fromPath.addListenerForSingleValueEvent(valueEventListener);
}
代码运行良好。
链接:

@Alex Mamo用另一个问题回答了这个问题

private void copyRecord(Query fromPath, final DatabaseReference toPath) {

        ValueEventListener valueEventListener = new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                toPath.setValue(dataSnapshot.getValue()).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {

                        if (task.isComplete()) {

                            System.out.println("Complete");

                        } else {

                            System.out.println("Failed");

                        }

                    }
                });

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        };

        fromPath.addListenerForSingleValueEvent(valueEventListener);

    }
private void copyRecord(查询fromPath,最终数据库引用toPath){
ValueEventListener ValueEventListener=新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
setValue(dataSnapshot.getValue()).addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.isComplete()){
系统输出打印项次(“完成”);
}否则{
System.out.println(“失败”);
}
}
});
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
};
fromPath.addListenerForSingleValueEvent(valueEventListener);
}
代码运行良好。
链接:

问题解决了吗?@Ticherhaz是的:)你解决问题了吗?@Ticherhaz是的:)