[英]Can't change property of this
我試圖創建一個自定義保存方法,以便不將用戶密碼存儲為純文本。 但似乎無論我做什么來改變this.values的值都沒有任何影響。 這是我的續集模型:
module.exports= function (sequelize, DataTypes){
return sequelize.define("Users",{
username: DataTypes.STRING,
password: DataTypes.STRING,
first_name: DataTypes.STRING,
last_name: DataTypes.STRING,
email: DataTypes.STRING,
is_admin: DataTypes.BOOLEAN,
active: DataTypes.BOOLEAN
},{ instanceMethods: {
user_save: function(){
if(this.isNewRecord){
var salt = 'blahblahblah';
var key128Bits = CyrptoJS.PBKDF2(this.values.password, salt, { keySize: 128/32 });
delete this.values.password;
this.values.password = key128Bits.toString()
console.log('new record ' + key128Bits.toString())
}
console.log(this.values)
this.save();
return
}}
}
);};
第一個日志語句確認if isNewRecord中的代碼正在運行,並生成散列,第二個日志語句和輸出表明其屬性與原始值保持不變。 有誰知道為什么這是或如何解決問題?
我可以在發布請求后立即執行此操作但我寧願這樣做,如果可能的話。
http://sequelizejs.com/#instances-update-save
設置this.password
而不是this.values.password
問題是this.values
實際上只是一個getter,它返回所有屬性及其各自的值。 添加一個setter可能是個好主意。 但是問題是,setter是否應該更新數據庫。 所以基本上this.values
應該只用於console.log
東西。 它也在內部用於instance.toJSON()
。
並且由於XMen已經正確回答,你必須使用this.password
而不是this.values.password
:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.