我开始学习Sails.js,我想知道是否有一种更简单的方法来从会话变量中设置模型中的默认值?我使用Waterlock进行身份验证,并在会话变量(如req.session.user_id )中设置user_id。我有一个消息模型,我想将'from'字段默认为这个会话变量。在Sails.js中有办法做到这一点吗?
发布于 2016-11-06 14:33:40
如果您使用的是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)...,如果别名为null/未定义,则使用alias = defaultsTo.call(values)获取别名的值。
因此,要使用req.session.user_id,您可能必须在创建过程中包含它。Model.create({session: req.session,...})。我不太确定,因为我不使用水锁。我不认为这是最好的方法。
根据我的经验,在使用sails mysql等适配器时,这些额外的值会被忽略,但是如果您使用sails磁盘进行开发,那么您可能会看到这些额外的值是持久化的。您可能需要在持久化之前删除它们。
beforeCreate: function(values, cb){
delete values['session'];
cb();
}https://stackoverflow.com/questions/40444877
复制相似问题