gpt4 book ai didi

sequelize.js - Sequelize ,使用 mysql 函数覆盖特定的列值

转载 作者:行者123 更新时间:2023-12-04 14:00:48 24 4
gpt4 key购买 nike

我需要在查询的特定值的 getter 和 setter 中使用特定函数,如下所示:

SELECT AES_DECRYPT(COLUMN, UNHEX(SHA2('PASSWORD',512))) FROM TABLE;

我如何使用 sequelize 来解决这个问题?这个函数是针对 MySQL 的

问候

最佳答案

我能找到的最接近的事情是声明一个列数组(Sequelize 中的属性),使用 Sequelize.fn 设置列(属性)的值以执行 MySQL 函数。

// model.js
const User = sequelize.define('User', {
// Other attributes
email: {
type: DataTypes.BLOB('medium'),
get () {
const val = this.getDataValue('email');
return val ? val.toString('utf8') : null;
},
set (value) {
this.setDataValue('email', Sequelize.fn('AES_ENCRYPT', value, 'MY_SUPER_SECRET_KEY'));
},
allowNull: false,
},
// Other attributes
}, {
// Other model options
}
);

User.basicAttributes = [
// Other attributes
[Sequelize.fn('AES_DECRYPT', Sequelize.col(`user.email`), 'MY_SUPER_SECRET_KEY'), 'email'],
// Other attributes
]
稍后,我在执行的查询中使用该数组:
// controller.js
const data = await User.findAll({
attributes: User.basicAttributes,
});
您可以使用该工作代码并根据您的需要进行调整。
我找不到在 getter 中调用 AES_DECRYPT 的方法。如果有人知道如何做到这一点(并避免使用属性数组),我会对答案非常感兴趣。

关于sequelize.js - Sequelize ,使用 mysql 函数覆盖特定的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46002162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com