首页 > 解决方案 > 如何将节点的子节点复制到另一个节点 Firebase 和 Android

问题描述

我有一个包含公司类别的 X 数据库,我想获取类别的孩子并将副本发送到 AllEmpresas

我的火力基地 https://i.imgur.com/YDhHn6X.jpg

我正在使用此代码,但我不知道如何实现

private void copyRecord(DatabaseReference fromPath, final DatabaseReference toPath) {
        ValueEventListener valueEventListener = new ValueEventListener()  {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {   

               toPath.setValue(dataSnapshot.getValue()).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isComplete()) {
                            Log.d(TAG, "Success!");
                        } else {
                            Log.d(TAG, "Copy failed!");
                        }
                    }
                });
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {}
        };

        fromPath.addListenerForSingleValueEvent(valueEventListener);
    }

标签: androidfirebasefirebase-realtime-database

解决方案


一旦实施,您的代码将导致一个无限循环。这是它正常运行的正确方法。

private void copyRecord(DatabaseReference fromPath, final DatabaseReference toPath) {
    fromPath.addListenerForSingleValueEvent(new ValueEventListener()  {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            toPath.setValue(dataSnapshot.getValue().toString()).addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    Log.d(TAG, "Success!");
                }
            });
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {}
    });
}

推荐阅读