2013-10-31 52 views

回答

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它们存储在数据库中。

+0

感谢Ben,所以现在我们不能在模型中声明它,就像rails使用'attr_accessor'所做的一样,所以我们只需调用'.create(params)'而不是在调用'.create ()'? – ginad

+0

我早些时候试过这个代码,不知道为什么(虚拟)属性没有用'.create'设置。 你说得对,这很奇怪。我查看了我们的geddy-passport代码,并且'confirmPassword'似乎在那里作为一个虚拟属性正常工作。 我将提交一个问题并研究发生了什么。 – Ben

+0

是的,这就是我想知道,因为geddy有一个validatesConfirmed,所以我想知道如果'.create'不读取虚拟属性如何使用这个。再次感谢本 – ginad

相关问题