Wie werden Dateien mit Metadaten in LoopBack gespeichert?

Was ich tun möchte: Habe ein HTML-Formular mit einer Dateieingabe darin. Wenn eine Datei ausgewählt wird, sollte die Dateieingabe die Datei hochladen und eine Datei-ID erhalten. Wenn das Formular gesendet wird, wird die Datei-ID zusammen mit dem Formular gesendet und in die Datenbank geschrieben.

Kürzere Version:Ich möchte Metadaten (z. B. ID) mit meinen Dateien speichern.

Sounds einfach, aber ich habe Mühe, das in LoopBack zu tun.

Es gab ein paar Gespräche 1, 2) zu diesem Thema, und keiner von beiden schien zu einer Lösung zu führen, weshalb ich dachte, dass dies ein guter Ort sein könnte, um ein für alle Mal einen zu finden.

Die einfachste Lösung wäre die Verwendung von Modellbeziehungen, aber LoopBack unterstützt keine Beziehungen zum Dateispeicherdienst. Stoßen. Also müssen wir mit einem persistierten Modell namens @ gehFile, zum Beispiel, und überschreiben Sie die Standarderstellung, löschen Sie sie, damit sie das von mir verwendete Dateispeichermodell mit dem Namen @ speichert und daraus löschStorage.

Mein Setup bisher:

Ich habe ein Modell / api / Storage, das mit einem @ verbunden iloopback storage service und speichert die Datei erfolgreich im lokalen Dateisystem.Ich habe ein PersistedModel mit Dateimetadaten mit Mongo verbunden:name,size, url undobjectIdIch habe einen Remote-Hook eingerichtet, bevorcreate so kann die Datei zuerst gespeichert werden und dann ist esurl kann in @ injiziert werdFile.create()

Ich bin da und lautdiese LoopBack-Seite, Ich habe den ctx, in dem sich die Datei befinden sollte:

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

Was istctx?

ctx.req: Express Request-Objekt.
ctx.result: Express Response-Objekt.

Ok, jetzt bin ich auf der Express-Seite, ziemlich verloren, und es handelt sich um eine "Body-Parsing-Middleware", von der ich keine Ahnung habe, wie sie aussehen könnte.

Ich fühle mich wie ich nah an der Lösung bin, Jede Hilfe wäre dankbar. Ist dieser Ansatz richtig?

Antworten auf die Frage(14)

Ihre Antwort auf die Frage