Ich möchte Logik zu den Pre: signin und post: signin Hooks hinzufügen, aber nicht finden, wo sie definiert sind. In admin/server/api/session/signin.js finde ich die callHook() s für beide, kann aber die tatsächlichen Hooks nicht finden. Hilfe sehr geschätzt!KeystoneJS: Wo sind CallHook-Hooks definiert?
Antwort
KeystoneJS verwendet grappling-hook. und deshalb können Sie callHook verwenden.
in node_modules/Keystone/index.js Sie diesen Code sehen
var grappling = require('grappling-hook');
grappling.mixin(this).allowHooks('pre:static', 'pre:bodyparser', 'pre:session', 'pre:routes', 'pre:render', 'updates', 'signout', 'signin', 'pre:logger');
Ich bin nicht sicher, aber Sie finden nicht die tatsächlichen Haken , weil sie wirklich nicht existieren.
Die Methoden sind in Trapez definiert und Greifer einfach macht sie hoockable. z. B. signin ist die Methode, die in Keystone-Instanz definiert wurde, und grapple hat es als hooockable festgelegt. Und hier ist die Art, wie Sie nur sagen, was zu tun ist, nachdem die Unterzeichnung abgeschlossen ist.
keystone.callHook(user, 'post:signin', function (err) {
if (err) return res.json({ error: 'post:signin error', detail: err });
res.json({ success: true, user: user });
});
So in Laie Begriff r Sie sagen .. Hay keystone, meine Funktion aufrufen, nachdem dieser Benutzer angemeldet ist. Und dass es wirklich keinen Code in Keystone.
Mein Wissen ist hier begrenzt, wie der Benutzer weitergegeben wird und wie es passiert, dass nur dann, wenn dieser Benutzer angemeldet. Ich denke, wir müssen noch einige Experten hier leuchten.
Ich hatte einen Anwendungsfall, der eine Funktion benötigt jedes Mal, wenn ein bestimmtes Modell der Datenbank hinzugefügt wurde aufgerufen werden. Ich habe herausgefunden, dass Sie die Mongoose middleware speziell die Post-Middleware verwenden können, um solche Ergebnisse zu erzielen. In meinem Fall hatte ich also ein Produktschema, in dem ich wollte, dass eine Funktion jedes Mal ausgeführt wird, wenn ein neues Produkt hinzugefügt oder aktualisiert wurde. Es war so einfach wie das Hinzufügen der folgenden:
keystone.lists.Product.schema.post('save',function(){
console.log('called after new item saved');});
- 1. Wo sind fetch() und FormData() definiert?
- 2. Wo sind Exchange-Webdienste: ExtendedPropertyDefinition-IDs definiert?
- 3. Wo sind die Standardaliasnamen in PowerShell definiert?
- 4. Wo sind die Klassen int [] und string [] definiert?
- 5. Wo sind die Standard-Slot-Farben für jquery fullcalendar definiert?
- 6. Wo sind Rails 3 benutzerdefinierte JavaScript-Ereignisse definiert?
- 7. Wo ist Enum.values () definiert?
- 8. Wo ist __dso_handle definiert?
- 9. Wo _NFILE ist definiert
- 10. Wo ist GL_MULTISAMPLE definiert?
- 11. Wo ist com.intellij.modules.lang definiert
- 12. KeystoneJS, Tracking updatedBy/updatedAt
- 13. keystoneJS Beziehung zu Selbst
- 14. Abfrageergebnisse sind nicht definiert
- 15. Wo ist Namespace std definiert?
- 16. Wo ist "id" literal definiert?
- 17. Schienen: Wo ist "params" definiert?
- 18. wo definiert man Konstanten in CakePHP
- 19. Keystonejs Cors Fehler mit Middleware
- 20. Standardvorgabe für Types.Money in KeystoneJS
- 21. Sind negative boolesche Werte definiert?
- 22. Warum sind Objektantworten nicht definiert?
- 23. Wo sind JDBC4-Anmerkungen?
- 24. Wo sind die VBProjectsEvents?
- 25. Wo sind Methoden gespeichert?
- 26. Wo ist SHA256_Update() in openssl/crypto definiert?
- 27. capistrano failure - wo ist cap deploy definiert?
- 28. Im Namensraum "xxx" sind keine Befehle definiert
- 29. Wo sind die Android-Einstellungsschlüssel zu speichern?
- 30. Wo sollten Makros wie HAVE_SYS_UIO_H definiert sein?
Danke. Ich bin so weit gekommen, sehe aber nirgendwo einen echten Haken. Kannst du ein bisschen mehr Richtung auf _where_ geben, die sie erstellt werden sollten und/oder ein Beispiel von einem? Zum Beispiel, wenn ich einen Post hinzufügen möchte: Sign-in-Hook, wie kann ich Grappling-Hook anschließen, um die Funktion zu finden, die ich erstelle? – user166879
keystone.callHook (newUser, 'post: signin', function (err) {} – enRaiser
Ah, so meine Verwirrung war - ist - ich erwartete callHook() einen Haken zu nennen, die an anderer Stelle definiert ist, wenn in der Tat ist es eigentlich? 3. Der dritte Parameter ist die Hook-Funktion – user166879