Что я хочу сделать: Имейте html-форму, с внутренним файлом. Когда выбран файл, входной файл должен загружать файл и получать идентификатор файла, поэтому, когда форма отправляется, идентификатор файла отправляется с формой и записывается в базу данных.
Более короткая версия: Я хочу хранить метаданные (например, id) с моими файлами.
Звучит просто, но я изо всех сил стараюсь сделать это в LoopBack.
В этой теме было несколько разговоров (1, 2), и ни один из них не казался приводят к решению, поэтому я подумал, что это может быть хорошим местом, чтобы найти его раз и навсегда.
Простейшим решением было бы использовать отношения модели, но LoopBack не поддерживает отношения с сервисом хранения файлов. Удар. Поэтому мы должны пойти с сохраненной моделью с именем File, например, и переопределить значение по умолчанию, создать, удалить, чтобы оно сохраняло и удаляло из модели хранилища файлов, которая у меня есть - named Storage.
Моя настройка пока:
- У меня есть модель /api/Storage, которая связана с сервисом loopback storage и успешно сохраняет файл в локальной файловой системе.
- У меня есть PersistedModel, связанный с Mongo с метаданных файлов:
name,size,urlиobjectId - У меня есть удаленный крючок, настроенный до
create, поэтому файл можно сохранить первым, а затемurlможно вставить вFile.create()
Я там, и согласно этой странице LoopBack, у меня есть ctx, который должен иметь файл внутри:
File.beforeRemote('create', function(ctx, affectedModelInstance, next) {})`
Что ctx?
ctx.req: объект экспресс-запроса.ctx.result: объект экспресс-ответа.
Итак, теперь я на странице Экспресс, довольно потерян, и это что-то говорит о "промежуточном программном обеспечении для разбора тела", о котором я не знаю, что это может быть.
Мне кажется, что я близок к решению, любая помощь будет оценена. Правильно ли этот подход?