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',有时我需要在后端代码中使用,但是我有时也想在前端显示该字段的散列版本。

这可能吗?

我的问题的另一个例子是一个球员模型。 您不想将密码发送到前端,但有时您需要在后端使用它(即,如果用户input了正确的密码进行比较)。

您可能会期待以下(尚未实现): https : //github.com/sequelize/sequelize/issues/1462

现在,你可以像这样覆盖toJSON方法:

 { instanceMethods: { toJSON: function () { var resp = this.prototype.toJSON(); resp.secretField = hash(resp.secretField); return resp; } } } 

通过这种方式,秘密字段将可用于您的后端,但将对象转换为JSON并发送给最终用户时将被删除。