javascript - Sequelize JS - 保护属性

标签 javascript node.js sequelize.js

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/

相关文章:

javascript - REACT - 将事件处理程序附加到 child

node.js - 无法连接到 Twilio : open failed

node.js - RedisStore 忽略主机和端口字段

node.js - 在 Sequelize 关系中查询

node.js - 如何在 Sequelize 中正确配置和计算belongsToMany 关联?

javascript - 从时间戳/字符串转换为日期

javascript - 无法使用 JavaScript 更改 div 的类

authentication - socket.io 客户端命名空间授权

node.js - 从另一个属性中序列化模型 setter 集

javascript - 拦截 .blur() 事件中的值变化