Метеор: Как сохранить и восстановить файл в коллекции mongodb? - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь сохранить содержимое загруженного файла в коллекции:

export const Files = new Mongo.Collection('files');

Meteor.methods({
    'saveFileToDB': function (buffer) {
        Files.insert({ data:buffer,
            createdAt: new Date(),
            owner: this.userId,
            username: Meteor.users.findOne(this.userId).username
        });
    },
});

В другом файле я хочу получить сохраненный файл. Во-первых, я не знаю, какой идентификатор мне следует передать. Предположим, что в коллекции есть один файл, или я хочу первый, или файлы, принадлежащие текущему пользователю. Я попытался, я передал fileId как 1, но это не сработало. Я не знаю, на самом деле вопросительные знаки ниже:

import {Files} from "./files";

Meteor.methods({
    'slides.readFileFromDB'(fileId) {
        if (Files.???) { //contain any data
           const text = Files.findOne(???);
           console.log(text);
           // Meteor.call('slides.insert', text);
           return text;
        }
    })
 });

1 Ответ

1 голос
/ 16 октября 2019

Существует специальный слой для хранения файлов в виде чанков, который называется GridFs , поскольку при попытке сохранить двоичные файлы размером более 16 МБ возникают проблемы с нормальной коллекцией.

Существует такжехорошо зарекомендовавшая себя оболочка для обработки файлов в Meteor. Проверьте следующий пакет: https://github.com/VeliovGroup/Meteor-Files

...