gpt4 book ai didi

javascript - Sequelize 播种 ARRAY(ENUM)

转载 作者:行者123 更新时间:2023-11-29 12:23:15 27 4
gpt4 key购买 nike

我似乎无法弄清楚如何使用 Sequelize 为 ARRAY(ENUM) 播种。当我通过我的应用程序注册用户时,我可以很好地创建一个新用户,但是当我在种子文件中使用 queryInterface.bulkInsert 时,我得到:

错误:“roles”列的类型为“enum_Users_roles”[],但表达式的类型为 text[]

这是我的代码:

return queryInterface.bulkInsert('Users', [
{
email: faker.internet.email(),
roles: ['user'],
password: "hash",
public_id: faker.random.uuid(),
created_at: new Date(),
updated_at: new Date()
}
]);

这是我为用户准备的迁移文件:

return queryInterface.createTable('Users', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
email: {
type: Sequelize.STRING,
allowNull: false
},
password: {
type: Sequelize.STRING,
allowNull: false
},
roles: {
type: Sequelize.ARRAY(Sequelize.ENUM({
values: ['user', 'setter', 'admin']
})),
allowNull: false
},
public_id: {
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
allowNull: false
},
created_at: {
allowNull: false,
type: Sequelize.DATE
},
updated_at: {
allowNull: false,
type: Sequelize.DATE
}
})

我只是假设我做错了,但我找不到任何关于如何正确做的文档。如果有人可以帮助和解释(授人以渔),我将不胜感激。

最佳答案

有人在github上回答了here

这是他们对我有用的答案(我非常感谢)

您可以使用此代码

class Item extends Sequelize.Model { }

Item.init({
name: { type: DataTypes.STRING },
values: {
type: DataTypes.ARRAY(DataTypes.ENUM({
values: ['a', 'b']
}))
}
}, {
sequelize,
timestamps: true
})

sequelize.sync({ force: true }).then(async () => {
await sequelize.queryInterface.bulkInsert('Items', [
{
name: 'xyz',
values: sequelize.literal(`ARRAY['a']::"enum_Items_values"[]`),
createdAt: new Date(),
updatedAt: new Date()
}
]);
});
Executing (default): INSERT INTO "Items" ("name","values","createdAt","updatedAt") VAL


[1]: https://github.com/sequelize/sequelize/issues/11541#issuecomment-542791562

显然,您需要更改数组值和枚举值。例如,我的是ARRAY['user']::"enum_Users_values"[]

关于javascript - Sequelize 播种 ARRAY(ENUM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58326145/

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