【问题标题】:Is there a way to define a virtual field in Geddy model?有没有办法在 Geddy 模型中定义一个虚拟字段?
【发布时间】:2013-10-31 15:16:08
【问题描述】:

是否可以在geddy模型中定义临时字段/虚拟字段?

就像在表单中一样,我使用了输入字段 tmpFirstNametmpLastName,但提交时我想将信息存储在单个列中 name

谢谢

【问题讨论】:

    标签: node.js geddy


    【解决方案1】:

    这可以通过新的生命周期方法轻松实现(感谢您!)。

    在您的控制器中:

      this.create = function (req, resp, params) {
        var self = this
          , person = geddy.model.Person.create(params);
    
        person.firstname = params.firstname;
        person.lastname = params.lastname;
    
        if (!person.isValid()) {
          this.respondWith(person);
        }
        else {
          person.save(function(err, data) {
            if (err) {
              throw err;
            }
            self.respondWith(person, {status: err});
          });
        }
      };
    

    在您的模型中:

      this.defineProperties({
        name: {type: 'string'}
      });
    
      this.beforeSave = function () {
        this.name = this.firstname + ' ' + this.lastname;
      }
    

    请注意,您不要声明“虚拟”属性,否则 geddy 会将它们存储在数据库中。

    【讨论】:

    • 谢谢 Ben,所以现在我们不能像 rails 对 attr_accessor 所做的那样在模型中声明它,所以我们只调用 .create(params) 而不是在调用 @987654325 之后一一定义@?
    • 我之前尝试过该代码,但无法弄清楚为什么没有使用.create 设置(虚拟)属性。你说得对,这很奇怪。我查看了我们的 geddy-passport 代码,confirmPassword 似乎作为虚拟属性在那里工作正常。我将提出问题并调查发生了什么。
    • 是的,这也是我想知道的,因为 geddy 有一个 validatesConfirmed 所以我想知道如果.create 不读取虚拟属性,如何使用它。再次感谢本
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 2011-02-08
    • 2017-08-02
    • 1970-01-01
    • 2017-02-02
    相关资源
    最近更新 更多