Как сохранить несколько файлов в mongodb - PullRequest
0 голосов
/ 27 марта 2020

Я получаю файлы из ответа API. эти файлы я должен сохранить в базе данных mongoDB. код здесь, и я получаю распаковать файлы, но я не имею ни малейшего представления, чтобы сохранить файлы в базе данных

function drugbank_download_zip(filename) {
    options = {
        "auth": `${DRUGBANK_USERNAME}:${DRUGBANK_PASSWORD}`
    };
    return new Promise((fulfill, reject) => https.get(DOWNLOAD_URL, options, (res) => {
        const { statusCode } = res;

        let error;
        if (statusCode !== 200) {
            // Consume response data to free up memory
            res.resume();

            reject(new Error(`Request Failed.\nStatus Code: ${statusCode}`));
            return;
        }

        let writeStream = fs.createWriteStream(filename);
        res.on('data', (d) => writeStream.write(d));

        res.on('end', () => {
            console.log("finished downloading!")
            writeStream.close();
            fulfill(filename);
        });
   }));
}

async function each_drug_file(zip_path, callback) {
    const zip = fs.createReadStream(zip_path)
          .pipe(unzip.Parse({forceStream: true}));

    for await (const entry of zip) {
        let filename = entry.path
        if (filename.endsWith(".json")) {
            entry.buffer().then((buffer) => {
                callback(JSON.parse(buffer.toString("utf8")));
            });
        } else {
            // free memory from this file
            entry.autodrain();
        }
    }
}


drugbank_download_zip('drugs.zip').
    then((result) => {
        each_drug_file("drugs.zip", (drug_data) => {
            // TODO: do something awesome here!
            console.log(`${drug_data.drugbank_id}, ${drug_data.name}`);
        });
    },
    (err) => console.log(`failed to download with error ${err}`));

пожалуйста, помогите, если вы можете заранее спасибо

1 Ответ

0 голосов
/ 27 марта 2020

Вы можете посмотреть в GridFS. На уровне архитектуры не следует сохранять такой файл в БД Mon go. Это пустая трата времени, потому что вы не можете выполнить какую-либо операцию. Если вы все еще хотите сохранить. Вы можете посмотреть решение для хранения как Binary.

GridFS - это спецификация для хранения и извлечения файлов, размер файла которых превышает ограничение BSON в 16 МБ.

Подробнее:

https://docs.mongodb.com/manual/core/gridfs/

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