node.js - 如何使用 Geddy 模型事件

标签 node.js model geddy

我是 geddy 的新手,我对如何使用模型事件感到困惑。

我的模型有一个 slug 字段,我想在保存任何记录之前生成 slug(基于他们输入的名称)。

换句话说,我该如何在 geddy 中做到这一点?

轨道模型:

before_save :generateSlug
private:
 def generateSlug
   self.slug = self.name.parameterize
 end
<小时/>

示例模型代码: 模型/page.js

slugify = require('slug');
var Page = function(){
  this.defineProperties({
   slug: {type: 'string'},
   name: {type: 'string', required: true}
  });

  this.beforeSave = function(){
   this.slug = slugify(this.name);
  }
}
exports.Page = Page;

当我运行 p = geddy.model.Page.create({name: 'hello world'});p.save(function(e,d){ console. log(d); }) slug 未定义

最佳答案

您可以使用 beforeValidate 生命周期方法来执行此操作。

试试这个:

this.beforeValidate = function () {
  this.slug = slugify(this.name);
};

注意:这在 Model@0.3.2 之前不起作用,该版本修复了不一致的生命周期方法的错误。

关于node.js - 如何使用 Geddy 模型事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19555714/

相关文章:

java - 基于数据库父子表建模类的正确方法

php - 如何将完整的 POST 发送到 Codeigniter 中的模型

javascript - ejs 页面中未定义relativeTime() 实用程序

node.js - Geddy 单元测试 Controller

node.js - Marklogic 8 Node.js API - 短语搜索

node.js - 如何将 geoNear 与 mongoose 一起应用并获取两个坐标之间的距离

python - Django DB 模型 F 组合表达式

node.js - Geddy - 运行附加进程 - Twitter Stream

javascript - 如何自动加载 Node 项目中包含特定装饰器的文件

ios - 在 NodeJs HTTPS 中使用 certificates.cer