java - क्लाउड फायरस्टार में दस्तावेज़ कैसे स्थानांतरित करें?




android firebase (2)

यहां एक नए नाम के तहत एक संग्रह प्राप्त करने के लिए एक और भिन्नता है, इसमें शामिल हैं:

  1. मूल आईडी मानों को बनाए रखने की क्षमता
  2. फ़ील्ड नामों को अपडेट करने का विकल्प
    $(document).ready(function () {

        FirestoreAdmin.copyCollection(
            'blog_posts',
            'posts'
        );

    });

=====

var FirestoreAdmin = {

    // to copy changes back into original collection
    // 1. comment out these fields
    // 2. make the same call but flip the fromName and toName 
    previousFieldName: 'color',
    newFieldName: 'theme_id',

    copyCollection: function (fromName, toName) {

        FirestoreAdmin.getFromData(
            fromName,
            function (querySnapshot, error) {

                if (ObjectUtil.isDefined(error)) {

                    var toastMsg = 'Unexpected error while loading list: ' + StringUtil.toStr(error);
                    Toaster.top(toastMsg);
                    return;
                }

                var db = firebase.firestore();

                querySnapshot.forEach(function (doc) {

                    var docId = doc.id;
                    Logr.debug('docId: ' + docId);

                    var data = doc.data();
                    if (FirestoreAdmin.newFieldName != null) {

                        data[FirestoreAdmin.newFieldName] = data[FirestoreAdmin.previousFieldName];
                        delete data[FirestoreAdmin.previousFieldName];
                    }

                    Logr.debug('data: ' + StringUtil.toStr(data));

                    FirestoreAdmin.writeToData(toName, docId, data)
                });
            }
        );
    },

    getFromData: function (fromName, onFromDataReadyFunc) {

        var db = firebase.firestore();

        var fromRef = db.collection(fromName);
        fromRef
            .get()
            .then(function (querySnapshot) {

                onFromDataReadyFunc(querySnapshot);
            })
            .catch(function (error) {

                onFromDataReadyFunc(null, error);
                console.log('Error getting documents: ', error);
            });
    },

    writeToData: function (toName, docId, data) {

        var db = firebase.firestore();
        var toRef = db.collection(toName);

        toRef
            .doc(docId)
            .set(data)
            .then(function () {
                console.log('Document set success');
            })
            .catch(function (error) {
                console.error('Error adding document: ', error);
            });

    }

}

=====

यहां पिछला उत्तर दिया गया है जहां आइटम नई आईडी के तहत जोड़े गए हैं

        toRef
            .add(doc.data())
            .then(function (docRef) {
                console.log('Document written with ID: ', docRef.id);
            })
            .catch(function (error) {
                console.error('Error adding document: ', error);
            });   

क्या कोई मेरी मदद कर सकता है कि कैसे क्लाउड फायरस्टार में नाम बदलने, स्थानांतरित करने या दस्तावेज़ या संग्रह नामों को अपडेट करने के लिए?

इसके अलावा, वहाँ भी है कि मैं अपने संग्रह या दस्तावेजों को टर्मिनल या किसी भी एप्लिकेशन से अपडेट करने के लिए अपने क्लाउड फायरस्टार तक पहुंच सकता हूं?


वास्तव में कोई move विधि नहीं है जो आपको किसी दस्तावेज़ को किसी स्थान से दूसरे स्थान पर ले जाने की अनुमति देती है। आपको एक बनाने की आवश्यकता है। किसी दस्तावेज़ को किसी स्थान से दूसरे स्थान पर ले जाने के लिए, मैं आपको निम्नलिखित विधि का उपयोग करके सुसाइड करता हूं:

public void moveFirestoreDocument(DocumentReference fromPath, final DocumentReference toPath) {
    fromPath.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<DocumentSnapshot> task) {
            if (task.isSuccessful()) {
                DocumentSnapshot document = task.getResult();
                if (document != null) {
                    toPath.set(document.getData())
                        .addOnSuccessListener(new OnSuccessListener<Void>() {
                            @Override
                            public void onSuccess(Void aVoid) {
                                Log.d(TAG, "DocumentSnapshot successfully written!");
                                fromPath.delete()
                                .addOnSuccessListener(new OnSuccessListener<Void>() {
                                        @Override
                                        public void onSuccess(Void aVoid) {
                                            Log.d(TAG, "DocumentSnapshot successfully deleted!");
                                        }
                                })
                                .addOnFailureListener(new OnFailureListener() {
                                        @Override
                                        public void onFailure(@NonNull Exception e) {
                                            Log.w(TAG, "Error deleting document", e);
                                        }
                                });
                            }
                        })
                        .addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                Log.w(TAG, "Error writing document", e);
                            }
                        });
                } else {
                    Log.d(TAG, "No such document");
                }
            } else {
                Log.d(TAG, "get failed with ", task.getException());
            }
        }
    });
}

जिसमें fromPath उस दस्तावेज़ का स्थान है जिसे आप स्थानांतरित करना चाहते हैं और यह वह दस्तावेज़ है जिसमें आप दस्तावेज़ को स्थानांतरित करना चाहते हैं।

प्रवाह इस प्रकार है:

  1. दस्तावेज़ को fromPath स्थान से Get
  2. दस्तावेज़ toPath स्थान Write
  3. दस्तावेज़ को fromPath स्थान से Delete

बस!





google-cloud-firestore