如何在 Sequelize 中处理具有不同编码的列?

问题描述

我在使用 Sequelize (v4/v5/v6)MysqL 5.7 中存储和检索表情符号时遇到问题? 我必须将特定列的编码从 utf8 更改为 utf8mb4 以使 MysqL 按预期存储数据,但现在我无法使用 Sequelize 处理数据。它似乎总是认为 utf8。到目前为止我尝试过的事情:

let sequelize = new Sequelize(MysqL_db,MysqL_user,MysqL_password,{
    host: MysqL_host,dialect: 'MysqL',pool: {
        max: 5,min: 0,idle: 10000
    },charset: 'utf8mb4',omitNull: true,});
******************************************************************************
let sequelize = new Sequelize(MysqL_db,dialectOptions: {
        collate: 'utf8mb4_unicode_ci'
    },});
*******************************************************************************
let User = sequelize.define(
    'user',{
        id: {
            type: Sequelize.BIGINT,field: 'id',primaryKey: true
        },name: {
            type: Sequelize.STRING,field: 'name'
        },},{
        freezeTableName: true,timestamps: false,dialectOptions: {
            collate: 'utf8mb4_unicode_ci'
        }
    }
);

虽然这些方法Sequelize (v4/v5/v6) 中都不起作用,但我注意到运行

await sequelize.query('SET CHARSET utf8mb4')

在对上面的 name 列运行实际查询之前,可以正确存储和检索包含表情符号的名称。 我不想继续使用这个解决方案,因为它更像是一个黑客。相反,我想了解如何覆盖 Sequelize 的认字符集。我已经尝试过使用 https://github.com/mysqljs/mysqlhttps://github.com/sidorares/node-mysql2 的类似示例,并且在这两种情况下我都能够将认字符集覆盖为 utf8mb4 但我对 Sequelize 不知所措。官方文档很少谈论字符集覆盖,文档中给出的示例代码与我在上面尝试过的相同。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)