Как экспортировать данные вложенной коллекции Firestore в CSV - PullRequest
1 голос
/ 22 января 2020

Я пытаюсь экспортировать коллекцию коллекции Firestore в файл CSV со следующим кодом.

npm, используемый для этого, является "json2csv"

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const json2csv = require("json2csv").parse;
exports.csvJsonReport = functions.https.onRequest((request, response) => {
    const db = admin.firestore();
    const data = db.collection("collectionname").doc().collection("subcollection") //collection name ,documentid, subcollection
    return data.get().then((querySnapshot) => {
        var object = {}
        var jsondata = [];
        querySnapshot.forEach(doc => {
            object = doc.data();
            object['docid'] = doc.id; // must add this line after doc.data
            console.log("objectbefore", object)
            jsondata.push(object);
            console.log("objectafter", object)
            console.log(jsondata);
        });
        const csv = json2csv(jsondata);
        response.setHeader(
            "Content-disposition",
            "attachment; filename=files.csv"//file name.csv
        );
        response.set("Content-Type", "text/csv");
        return response.status(200).send(csv)
    }).catch((err) => {
        return console.log(err);
    });
});

Но результат, который я получаю в выходном CSV-файле - это только коллекция без внутренних вложенных коллекций.

возможно ли экспортировать данные вложенных коллекций в этом методе? Если нет, как я могу экспортировать данные вложенной коллекции в CSV?

edit # 1: код обновлен. Это ошибка, которую я получаю. Ошибка: данные не должны быть пустыми или должна быть включена опция «поля»

1 Ответ

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

Запросы в Firestore являются мелкими, это означает, что когда вы запрашиваете коллекцию collectionname, вы получаете документы в этой коллекции, но вы НЕ получаете документы в подколлекциях.

Вам нужно будет запросить каждую подгруппу, одну за другой, чтобы получить содержащиеся в них документы и добавить их содержимое в CSV.

В случае, если вы не знаете имен этих подколлекций ( т.е. они были созданы пользователями при использовании вашего приложения, а не архитектором базы данных при проектировании модели данных). В следующей статье вы найдете способ перечисления всех подколлекций документа Firestore с помощью облачной функции. ( отказ от ответственности, я автор статьи ).

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