KeystoneJS:callHook 挂钩在哪里定义?
KeystoneJS: where are callHook hooks defined?
我想向 pre:signin 和 post:signin 挂钩添加逻辑,但找不到它们的定义位置。在 admin/server/api/session/signin.js 中,我找到了两者的 callHook(),但找不到实际的挂钩。帮助非常感谢!
KeystoneJS 正在使用 grappling-hook。这就是您可以使用 callHook 的原因。
在node_modules/keystone/index.js中可以看到这段代码
var grappling = require('grappling-hook');
grappling.mixin(this).allowHooks('pre:static', 'pre:bodyparser', 'pre:session', 'pre:routes', 'pre:render', 'updates', 'signout', 'signin', 'pre:logger');
我不确定,但您没有找到真正的钩子因为它们确实不存在。
这些方法是在 keystone 中定义的,而 grapple 只是让它们变得可操作。例如,signin 是在 keystone 实例中定义的方法,grapple 使它成为 hoockable。
这是您将告诉您在完成签名后要做什么的方式。
keystone.callHook(user, 'post:signin', function (err) {
if (err) return res.json({ error: 'post:signin error', detail: err });
res.json({ success: true, user: user });
});
所以在外行术语中你说.. Hay keystone,在此用户登录后调用我的函数。为此,keystone 中确实没有代码。
我的知识有限,这里用户是如何传递的,以及只有当这个用户登录时它是如何发生的。我想,我们仍然需要一些专家来点亮这里。
我有一个用例,每次将特定模型添加到数据库时都需要调用一个函数。我发现您可以使用 Mongoose middleware 特别是 post 中间件来实现这样的结果。所以在我的例子中,我有一个产品模式,我希望在每次添加或更新新产品时都有一个函数 运行 。就像添加以下内容一样简单:
keystone.lists.Product.schema.post('save',function(){
console.log('called after new item saved');});
我想向 pre:signin 和 post:signin 挂钩添加逻辑,但找不到它们的定义位置。在 admin/server/api/session/signin.js 中,我找到了两者的 callHook(),但找不到实际的挂钩。帮助非常感谢!
KeystoneJS 正在使用 grappling-hook。这就是您可以使用 callHook 的原因。
在node_modules/keystone/index.js中可以看到这段代码
var grappling = require('grappling-hook');
grappling.mixin(this).allowHooks('pre:static', 'pre:bodyparser', 'pre:session', 'pre:routes', 'pre:render', 'updates', 'signout', 'signin', 'pre:logger');
我不确定,但您没有找到真正的钩子因为它们确实不存在。
这些方法是在 keystone 中定义的,而 grapple 只是让它们变得可操作。例如,signin 是在 keystone 实例中定义的方法,grapple 使它成为 hoockable。 这是您将告诉您在完成签名后要做什么的方式。
keystone.callHook(user, 'post:signin', function (err) {
if (err) return res.json({ error: 'post:signin error', detail: err });
res.json({ success: true, user: user });
});
所以在外行术语中你说.. Hay keystone,在此用户登录后调用我的函数。为此,keystone 中确实没有代码。
我的知识有限,这里用户是如何传递的,以及只有当这个用户登录时它是如何发生的。我想,我们仍然需要一些专家来点亮这里。
我有一个用例,每次将特定模型添加到数据库时都需要调用一个函数。我发现您可以使用 Mongoose middleware 特别是 post 中间件来实现这样的结果。所以在我的例子中,我有一个产品模式,我希望在每次添加或更新新产品时都有一个函数 运行 。就像添加以下内容一样简单:
keystone.lists.Product.schema.post('save',function(){
console.log('called after new item saved');});