【问题标题】:Moving or copying data from one node to another in firebase database在firebase数据库中将数据从一个节点移动或复制到另一个节点
【发布时间】:2017-12-02 06:01:50
【问题描述】:

我正在尝试将存在于一个节点上的数据(即 cart_details/UID)移动到另一个节点 orders/UID/order1。 我尝试了不同的方法,但似乎都有些混乱。是否有任何内置功能或方法可以使工作更轻松? 任何帮助表示赞赏。

我已经附上了相同的图片。 IMAGE.

【问题讨论】:

    标签: android node.js firebase firebase-realtime-database


    【解决方案1】:

    我建议您使用此方法:

    public void copyRecord(Firebase fromPath, final Firebase toPath) {
        fromPath.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                toPath.setValue(dataSnapshot.getValue(), new Firebase.CompletionListener() {
                    @Override
                    public void onComplete(FirebaseError firebaseError, Firebase firebase) {
                        if (firebaseError != null) {
                            System.out.println("Copy failed");
                        } else {
                            System.out.println("Success");
                        }
                    }
                });
            }
    
            @Override
            public void onCancelled(FirebaseError firebaseError) {}
        });
    }
    

    这是一个副本,而不是您可能看到的移动,因此原件将保留在其原来的位置。如果你想删除,你可以在fromPathSystem.out.println("Success");之后使用removeValue()方法。

    编辑:(2018 年 5 月 3 日)。

    这是使用新 Api 的代码。

    private void moveRecord(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);
    }
    

    【讨论】:

    • 谢谢@Alex Mamo,一定会尝试的!!
    • 通知我。
    猜你喜欢
    • 1970-01-01
    • 2023-02-18
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 2019-12-03
    相关资源
    最近更新 更多