簡體   English   中英

無法改變這個屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM