2016-07-11 7 views
0

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

0

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.

+0

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

+0

keystone.callHook (newUser, 'post: signin', function (err) {} – enRaiser

+0

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

0

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');});