繁体   English   中英

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

[英]How to copy data from one table to another table in Firebase?

我有两个表 - 购物车订单和放置订单。 cartOrders 用于将产品添加到购物车,当用户按下“Place Order”按钮时,placedOrders 被激活。 当用户单击“下订单”按钮时,我需要将数据从 cartOrders 复制到 placeOrders,但我无法这样做。

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:
----------OrderID:
-----------------ProductID:
---------------------------ProductID:
---------------------------ProductName:
---------------------------ProductPrice:
---------------------------ProductQty:

@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);

    }

该代码工作正常。 链接: 将数据从一个节点移动或复制到 Firebase 数据库中的另一个节点

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM