2016-11-06 12 views
0

私はSails.jsを学び始めています。セッション変数からモデルのデフォルト値を設定する簡単な方法があるかどうかを知りたいのですか?私はWaterlockを使用して、認証を行い、req.session.user_idのようなセッション変数に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)...の場合、エイリアスがnull/undefinedの場合、alias = defaultsTo.call(values)がエイリアスの値を取得するために使用されます。

req.session.user_idを使用するには、作成時にそれを含める必要があります。 Model.create({session: req.session,...})。私はウォーターロックを使用しないので、実際にはわかりません。そして、これが最善の方法だとは思わない。

私の経験からこれらの余分な値は、帆-mysqlのなどのアダプタを使用する際に無視されていますが、開発のための帆ディスクを使用している場合は、これらの余分な値が永続化されていることを表示される場合があります。保持する前に削除することをお勧めします。

beforeCreate: function(values, cb){ 
    delete values['session']; 
    cb(); 
    } 
関連する問題