Что я хочу сделать: Имейте 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
: объект экспресс-ответа.
Итак, теперь я на странице Экспресс, довольно потерян, и это что-то говорит о "промежуточном программном обеспечении для разбора тела", о котором я не знаю, что это может быть.
Мне кажется, что я близок к решению, любая помощь будет оценена. Правильно ли этот подход?