Я начинаю изучать Sails.js, и я хочу знать, есть ли более простой способ установить значение по умолчанию в модели из переменной сеанса? Я использую Waterlock, чтобы выполнить аутентификацию и установив user_id в переменной сеанса, как req.session.user_id
. У меня есть модель сообщений, я хочу по умолчанию указать поле 'from'
этой переменной сеанса. Есть ли способ сделать это в Sails.js?Установить значение по умолчанию для модели (Sails.js)
ответ
Если вы используете по умолчанию ОРМ паруса, ватерлинии, то модели атрибуты имеют 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,...})
. Я не уверен, потому что я не использую Waterlock. И я не думаю, что это лучший способ сделать это.
Из моего опыта эти дополнительные значения игнорируются при использовании адаптеров, таких как парусов-MySQL, но если вы используете парусов-диска для развития, то можно увидеть, что эти дополнительные значения сохраняются. Вы можете удалить их, прежде чем будете продолжать.
beforeCreate: function(values, cb){
delete values['session'];
cb();
}