Как скопировать данные из одной таблицы в другую в Firebase? - PullRequest
1 голос
/ 29 января 2020

У меня есть две таблицы - cartOrders и placeOrders. cartOrders используется для добавления товаров в корзину, а placeOrders активируется, когда пользователь нажимает кнопку «Разместить заказ». Мне нужно скопировать данные из 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:

1 Ответ

0 голосов
/ 29 января 2020

@ Алекс Мамо ответил на этот вопрос на другой вопрос.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...