我开始学习 Sails.js,我想知道是否有更简单的方法可以从会话变量中设置模型中的默认值?我正在使用Waterlock进行身份验证并将 user_id 设置在会话变量中,例如req.session.user_id
. 我有一个消息模型,我想将该'from'
字段默认为此会话变量。有没有办法在 Sails.js 中做到这一点?
问问题
748 次
1 回答
0
如果你使用 Sail 的默认 ORM,Waterline,那么模型属性有一个defaultsTo选项。提供的值可以是一个函数。您可以查看水线文档。
样品模型
module.exports = {
attributes: {
description: {
type: 'string',
defaultsTo: 'No description.'
},
email: {
type: 'email',
required: true,
unique: true
},
alias: {
type: 'string',
defaultsTo: function(){
return this.email;
}
},
}
};
如果提供的值是一个函数,则对该函数的调用将绑定到 create 中的值。
对于Model.create(values)...
,如果别名为空/未定义,则alias = defaultsTo.call(values)
用于获取别名的值。
所以要使用req.session.user_id
你可能必须在创建过程中包含它。
Model.create({session: req.session,...})
. 我不太确定,因为我不使用 Waterlock。而且我并不认为这不是最好的方法。
根据我的经验,在使用诸如sails-mysql之类的适配器时会忽略这些额外的值,但如果您使用sails-disk进行开发,那么您可能会看到这些额外的值被保留。您可能希望在坚持之前删除它们。
beforeCreate: function(values, cb){
delete values['session'];
cb();
}
于 2016-11-06T14:33:40.733 回答