2016-03-04 3 views
0

Я создаю приложение, которое требует, чтобы пользователь мог загружать аудиофайлы, а затем позже запрашивал те же файлы. Будучи тем, что я очень новичок во всем этом, создание файлового каталога кажется мне очень запутанным, GridFS (хранение аудиофайлов в базе данных), по-видимому, легче понять на данном этапе.GridFS + express

Что меня смущает, если я иду в направлении GridFS, каждый пользователь должен иметь коллекцию GridFS. Или я каким-то образом настроил бы одну основную коллекцию GridFS, и все аудиофайлы пользователя будут в этой коллекции. Тогда в моей модели пользователя mongoose я бы сохранил имена аудиофайлов, принадлежащих данному пользователю. И затем, когда пользователь запросит свои аудиофайлы, я получу список файлов, принадлежащих этому пользователю, и найдите одну основную коллекцию GridFS для этих файлов?

Я знаю, что мне может быть лучше настроить файловую систему (соображения производительности), я посмотрел на nginx, но я обнаружил, что все больше запутался.

ответ

1

Рассматривайте gridFS как коллекцию с аудиофайлами (так что у нас есть файл и контент), , тогда вам нужно хранить файлId где-то с записью/документом владельца.

Что может быть проблемой, заключающейся в том, что сохранение указателя на пользовательские файлы в одном документе может превышать максимальный размер документа (16 МБ), поэтому, если это может быть случайным, нам нужна простая коллекция userId-fileId. Веселитесь!

+0

Спасибо, я просто хотел уточнить вопрос о переходе на ограничение размера документа размером 16 МБ. Если я понял, что вы говорите, возможно, что запись/документ пользователя, который содержит указатели на все аудиофайлы, принадлежащие этому пользователю, может стать больше, чем 16 МБ, если у пользователя много аудиофайлов? В моем случае пользователь ограничен хранением всего 3 аудиофайлов, размер отдельных файлов может быть больше 16 МБ. –

+0

в этом конкретном случае просто сохраните ссылку на аудиофайл в пользовательском документе. – profesor79