Wie definiere ich ein Feld mit Typ als Array von Types.S3File. Grundsätzlich versuche ich, ein Array von Bildern in S3 zu speichern. Ich habe die Dokumentation der Keystone-Datenbank durchsucht. Sie haben angegeben, wie man den Typ als S3-Datei definiert. Betrachten Sie ein reales Lebensszenario wie es einen Benutzer gibt und er hat mehrere Bilder oder es gibt einen Blog und er enthält mehrere Bilder, wie kann ich das mit Keystone machen? Vielen Dank. Jede Hilfe wäre willkommen.Keystone JS mit Feld als Array von s3-Objekten
Antwort
Leider ist das mit dem S3File-Typ nicht möglich.
Während Array-Felder vorhanden sind, unterstützen sie momentan nur Zahlen- und String-Literale. Die Haupt-Site-Dokumentation für diese Felder wurde nicht aktualisiert, aber es sieht so aus, als ob sie bearbeitet wird. Hier finden Sie die WIP-Dokumentation für NumberArray und TextArray.
Sie können auch Arrays von Objekten mit einer Problemumgehung erstellen. Wenn Sie ein neues Modell mit einem Array als einzigem Feld erstellen, können Sie innerhalb dieses Arrays ein verschachteltes Schema erstellen. Wenn Sie versuchen, andere Felder neben dem Array anzugeben, werden Sie unglücklicherweise einen Fehler erzeugen. Ich habe diese Technik erfolgreich verwendet, um einen Warenkorb für eine E-Commerce-Site zu erstellen, an der ich gerade arbeite. Der Wagen Schema sieht wie folgt aus:
var Cart = new keystone.List('Cart');
Cart.schema.add({
items: [{
itemID: String,
quantity: Number
}]
});
Sie können dann in den Warenkorb gelegt Modell beziehen eine Relationship Field in einem anderen Modell (in meinem Fall, die User-Modell).
Der Nachteil dieses Ansatzes ist, dass das Warenkorbmodell in der Admin-Benutzeroberfläche nicht bearbeitet werden kann. Dies ist kein Problem für mich, da der Warenkorb von Middleware aktualisiert wird, nicht von einem Benutzer. Ich bin mir nicht sicher, ob das für Ihren Anwendungsfall funktionieren würde, wenn Sie möchten, dass die Leute ihre eigenen Bilder hochladen können, aber vielleicht ist das der Ausgangspunkt für eine mögliche Lösung.
Auch ich bin mir nicht sicher, ob Sie es bemerkt haben, aber es gibt einen CloudinaryImages Feldtyp, der mehrere Bilder unterstützt. Das würde natürlich Cloudinary erfordern, aber sie haben eine kostenlose Stufe.
Hoffentlich finden Sie eine Problemumgehung, die Ihren Anforderungen entspricht, während dies eine frustrierende Einschränkung ist, habe ich Keystone gefunden, um eine großartige Plattform zu sein.
- 1. Authentifizierung keystone js mit stormpath
- 2. Keystone JS CORS
- 3. Können wir Keystone JS mit Angular kombinieren?
- 4. Keystone JS: Lokale Dateiuploads werden automatisch umbenannt
- 5. Ereignis auf Keystone JS Ansicht funktioniert nicht
- 6. Keystone js Audio-Video-Unterstützung und Verbindung mit db überdenken?
- 7. Keystone: Pass Mungo Verbindung in Keystone Optionen
- 8. keystone js: localhost ist nicht in den certs altnames
- 9. mit einem Feld als Schlüssel
- 10. Wie kann ich Quellkarte in Keystone Js hinzufügen
- 11. Senden von Array als Callbackdata in JS von PHP
- 12. Abrufen von Feld in einer Klasse als Byte-Array
- 13. js setAttribute mit Array
- 14. Openstack KeyStone SSL Ausnahme, wenn eine Instanz KeyStone Erstellen
- 15. Keystone v3 Auth Fehler
- 16. SizeOf ein Array als ein Feld?
- 17. Injektion in Keystone (Openstack)
- 18. Java - Enum mit Array-Feld
- 19. Array mit React js sortieren
- 20. Pass Array von IDs als einzelnes verborgenes Feld
- 21. selectize js benutze Array als Quelle
- 22. Validierung mit required_with in Laravel für Input-Feld als Array?
- 23. Gebäude FAQ-Listen mit Keystone Listen
- 24. Admin Modellkategorien, Keystone 4
- 25. Verwenden der globalen Instanz von Keystone
- 26. warum murano-test-runner mit keystone verbinden?
- 27. Konfigurieren eines Keystone-Service-Providers
- 28. Speichern von Array-Inhalt als CSV-Datei js
- 29. kann ich js Variable als Index von MVC-Array verwenden?
- 30. Express JS senden Array von Dateien und JSON als Antwort
Danke für die Antwort. Ja, ich habe Cloudinary-Images, aber der Client war nicht bereit, dafür zu bezahlen, und wir hatten ein Amazon-Konto, also überlegt, S3FileType zu verwenden. Wie auch immer, jetzt haben wir unseren Kunden davon überzeugt, Cloudinary zu verwenden und wir gehen mit CloudinaryImages. –