我开始学习Sails.js,我想知道是否有更简单的方法从会话变量设置模型中的默认值?我正在使用 Waterlock 进行身份验证,并在req.session.user_id
等会话变量中设置user_id。我有一个消息模型,我想将'from'
字段默认为此会话变量。有没有办法在Sails.js中执行此操作?
答案 0 :(得分:0)
如果您使用Sail的默认ORM, Waterline ,则模型属性具有 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;
}
},
}
};
如果提供的值是函数,则对此函数的调用将绑定到create中的值。
对于Model.create(values)...
,如果别名为null / undefined,则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();
}