一旦特定模型更新后,如何让keystoneJS运行一个函数?

时间:2016-03-30 01:03:11

标签: javascript node.js express keystonejs

我希望在特定KeystoneJS模型中有新项目或更新项目后运行一个函数。我怎么做?我会添加一个活动......是否已经举办了活动?我是在模型中还是在其他地方添加它?

2 个答案:

答案 0 :(得分:2)

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

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 middleware,因为有些限制适用,例如在进行批量更新时,中间件运行,这是设计在mongoose中并且与keystone无关

答案 1 :(得分:0)

KEystoneJS使用猫鼬。

当您添加新模型时,CRUD(更改,替换,更新,删除)会在管理员端自然发生(http:/// keystone

但是对于非管理员方面您需要创建路由,并且在路由视图中您可以使用mongoose API来执行此操作。

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