2013-10-31 61 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

相關問題