【问题标题】:How to copy data from one table to another table in Firebase?如何将数据从一个表复制到 Firebase 中的另一个表?
【发布时间】:2020-01-29 14:57:59
【问题描述】:

我有两张桌子——cartOrders 和placedOrders。 cartOrders 用于将产品添加到购物车,当用户按下“Place Order”按钮时,placedOrders 被激活。 当用户单击“下订单”按钮时,我需要将数据从 cartOrders 复制到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:

【问题讨论】:

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

标签: java android firebase firebase-realtime-database


【解决方案1】:

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

    }

代码运行良好。 链接:Moving or copying data from one node to another in firebase database

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    • 2011-05-16
    • 2014-05-02
    相关资源
    最近更新 更多