Come archiviare i file con metadati in LoopBack?

Cosa voglio fare: avere un modulo html, con un input di file all’interno. Quando viene selezionato un file, l’input del file deve caricare il file e ottenere un id di file, quindi quando il modulo viene inviato, l’ID del file viene pubblicato con il modulo e scritto nel database.

Versione più breve: voglio memorizzare metadati (id per esempio) con i miei file.

Sembra semplice, ma faccio fatica a farlo in LoopBack.

C’è stato un paio di conversazioni ( 1 , 2 ) su questo argomento, e nessuno dei due sembrava portare a una soluzione, quindi ho pensato che questo potrebbe essere un buon posto per trovarne uno una volta per tutte.

La soluzione più semplice sarebbe utilizzare le relazioni tra modelli, ma LoopBack non supporta le relazioni con il servizio di archiviazione file. Bump. Quindi dobbiamo andare con un persistedmodel chiamato File per esempio, e sovrascrivere il default create, delete in modo che salvi e cancelli dal modello di archivio di file che ho – denominato Storage .

La mia configurazione finora:

  • Ho un modello / api / archiviazione che è collegato a un servizio di archiviazione di loopback e sta salvando il file correttamente sul filesystem locale.
  • Ho un PersistedModel connesso a Mongo con meta dati di file: name , size , url e objectId
  • Ho creato un hook remoto prima di create modo che il file possa essere salvato per primo e poi il suo url può essere iniettato in File.create()

Sono lì e, secondo questa pagina LoopBack , ho il ctx che dovrebbe avere il file all’interno:

 File.beforeRemote('create', function(ctx, affectedModelInstance, next) {})` 

Cos’è il ctx ?

ctx.req : object Richiesta ctx.req .
ctx.result : object risposta rapida.

Ok, ora sono alla pagina Express, piuttosto perso, ed è qualcosa su un ‘middleware di analisi del corpo’ che non ho idea di cosa possa essere.

Mi sento come se fossi vicino alla soluzione, ogni aiuto sarebbe apprezzato . Questo approccio è giusto?