一旦特定型号更新,我如何获得keystoneJS运行function?

我想要在特定的KeystoneJS模型中有新的或更新的项目时运行一个函数。 我怎么做? 我会添加一个事件…是否有事件? 添加到模型或其他地方吗?

您可以像任何非Keystone项目一样使用mongoose中间件。 keystone列表模式可以使用.schema来访问,例如

 var keystone = require('keystone'); var Types = keystone.Field.Types; var User = new keystone.List('User'); User.add({ name: { type: Types.Name, required: true, index: true }, email: { type: Types.Email, initial: true, required: true, index: true }, }); //do stuff BEFORE the user document is fully saved to the DB User.schema.pre('save', function(next){ console.log('SAVING USER:', this); next(); }); //do stuff AFTER the user document has been saved to the DB User.schema.post('save', function(user){ console.log('USER WAS SAVED:', user); }); User.defaultColumns = 'name, email'; User.register(); 

看看mongoose中间件 ,因为有一些限制,例如在进行大规模更新时,中间件不能运行,这是mongoosedevise的,与keystone无关。

KEystoneJS使用mongoose。

添加新模型时,CRUD(更改,replace,更新,删除)自然发生在pipe理端(http:/// keystone

但是,对于非pipe理员端您需要使路由,并在路由视图中,您可以使用mongooseAPI来这样做。

keystoneJS中的任何更改都可以通过重新启动服务器(nam start)