var Game = sequelize.define('Game', {
secretField: {
type: DataTypes.STRING(45),
validate: {
notEmpty: true
}
}
}, {
getterMethods: {
secretFieldHash: function () {
return crypto.createHash('sha256').update(this.getDataValue('secretField')).digest('hex');
}
}
});
以上模型是我当前模型的示例。我想要实现的目标如下。
我有一个“secretField”,有时需要在后端代码中使用,但有时我也想在前端仅显示该字段的哈希版本。
这可能吗?
我的问题的另一个例子是玩家模型。您不想将密码发送到前端,但有时需要在后端使用它(即,比较用户是否输入了正确的密码)。
最佳答案
您可能期待以下内容(尚未实现):https://github.com/sequelize/sequelize/issues/1462
现在,您可以像这样覆盖 toJSON 方法:
{
instanceMethods: {
toJSON: function () {
var resp = this.prototype.toJSON();
resp.secretField = hash(resp.secretField);
return resp;
}
}
}
通过这种方式, secret 字段将可供您的后端使用,但当对象转换为 JSON 并发送给最终用户时,该 secret 字段将被删除。
关于javascript - Sequelize JS - 保护属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22628833/