首页 > 解决方案 > 是否有用于 sequelize 的拦截器模式,用于对 db 的敏感数据进行标记化和去标记化

问题描述

我正在为 postgres 使用 sequelize,并且需要对所选字段的表进行标记化,以分别在存储之前和检索之后进行标记化和去标记化。

任何建议的最佳实践,我可以在一个地方执行此操作,而不是在每个模型的创建/更新/获取挂钩上执行此操作?

我正在寻找类似拦截器模式的东西,它可以在续集实例级别用于所有模型。那可能吗?

标签: node.jssequelize.js

解决方案


您正在寻找的功能,听起来像getter& setterfor sequelize Model 的属性。getter您可以使用自定义&声明模型,setter如下所示。

const YourModel = sequelize.define("ModelName", {
    secretData: {
        type : //Data type
        set(value) {
            // do what ever processing you want to applied, which will be stored in db
             this.setDataValue("secretData", PROCESSED_VALUE)
        }
        get() {
             const storedValue = this.getDataValue("secretData")
             // do whatever processing you want to applied, on storedData
             return processedData
          }
    }
}

推荐阅读