2016-11-06 259 views
0

我開始學習Sails.js,我想知道是否有更簡單的方法從會話變量設置模型中的默認值?我正在使用Waterlock進行身份驗證,並將會話變量user_id設置爲req.session.user_id。我有一個消息模型,我想默認'from'字段到這個會話變量。有沒有辦法在Sails.js中做到這一點?將默認值設置爲模型(Sails.js)

回答

0

如果您正在使用賽歐的默認ORM,水線,那麼模型的屬性有defaultsTo選項。提供的值可能是一個函數。您可以查看waterline documentation

標本模型

module.exports = { 
    attributes: { 
    description: { 
     type: 'string', 
     defaultsTo: 'No description.' 
    }, 
    email: { 
     type: 'email', 
     required: true, 
     unique: true 
    }, 
    alias: { 
     type: 'string', 
     defaultsTo: function(){ 
     return this.email; 
     } 
    }, 
    } 
}; 

如果所提供的值是一個函數,則該函數調用被綁定到的值中創建。

對於Model.create(values)...,如果別名爲空/未定義,則alias = defaultsTo.call(values)用於獲取別名的值。

所以要使用req.session.user_id您可能需要在創建過程中包含它。 Model.create({session: req.session,...})。我不太確定,因爲我沒有使用Waterlock。我並不認爲這不是最好的辦法。

從我的經驗,這些額外的值當使用適配器,例如帆-mysql的,但如果你正在使用帆盤進行開發,那麼你可能會看到,這些額外的值持續忽略。在持續之前,您可能需要刪除它們。

beforeCreate: function(values, cb){ 
    delete values['session']; 
    cb(); 
    }