2017-08-16 176 views
3

每次從數據庫中選擇時,我需要將我的signup_at時間戳轉換爲某種格式。Sequelize:使用Getters修改日期時間戳輸出

我想爲此使用一個getter,但它似乎沒有返回修改後的數據。它繼續返回存儲在數據庫中的同一日期對象。

var moment = require("moment"); 

var Referral = sequelize.define("referral", { 
    id: { 
     allowNull: false, 
     type: DataTypes.CHAR(24), 
     unique: true, 
     primaryKey: true 
    }, 
    active: { 
     allowNull: false, 
     type: DataTypes.BOOLEAN, 
     defaultValue: true 
    }, 
    name: { 
     allowNull: true, 
     type: DataTypes.STRING 
    }, 
    method: { 
     allowNull: true, 
     type: DataTypes.STRING 
    }, 
    signup_at: { 
     allowNull: false, 
     type: DataTypes.DATE, 
     get: function() { 
     return moment(this.getDataValue("signup_at")).format("MM/DD/YYYY"); 
     } 
    } 
}); 


Referral.findAll({ 
where: { 
    active: true 
}, 
raw: true 
}).then(function(referrals) { 
    console.log(referrals); 
}); 

回答

1

試試下面的代碼

Referral.findAll({ 
    where: { 
     active: true 
    }, 
    raw: false 
}).then(function (referrals) { 
    referrals.forEach(function (referral, index, array) { 
     var value = referral.get(); 
     console.log(value); 
    }); 
}); 

看來raw = true不會使用getter函數。

您可能會使raw錯誤並明確地調用get