gpt4 book ai didi

javascript - 主键整数返回在查找时递增

转载 作者:行者123 更新时间:2023-12-03 22:22:34 25 4
gpt4 key购买 nike

编辑: 我已经确定这只是在 SQLite 中使用 Sequelize 时的一个问题。切换到 Postgres 后我没有问题。这个问题仍然存在。
在 Sequelize 中,我拥有具有多对多关系的 ServerSeller 模型。连接模型是 IgnoredSellers

const Server = sequelize.define('server', {
id: {
type: DataTypes.INTEGER,
primaryKey: true
}
}, { timestamps: false });

const Seller = sequelize.define('seller', {
id: {
type: DataTypes.STRING,
allowNull: false,
primaryKey: true
},
title: {
type: DataTypes.STRING,
allowNull: false
}
}, { timestamps: false });

const IgnoredSeller = sequelize.define('ignored_seller', {}, { timestamps: false });

Server.belongsToMany(Seller, { through: IgnoredSeller });
Seller.belongsToMany(Server, { through: IgnoredSeller });
这是 servers 表中的示例行:


ID


84805370821310096


当我尝试 Server.findByPk(84805370821310096) 时,返回的 Server 实例有一个 id84805370821310100 ,它看起来像是存储值的递增版本。
const server = await Server.findByPk(serverId); // 84805370821310096 is passed in

// Executing (default): SELECT `id` FROM `servers` AS `server` WHERE `server`.`id` = '84805370821310096';

console.log('SERVER:', server.id); // 84805370821310100 is returned
因此,当我尝试 server.addSeller(seller) 时,出现外键约束错误,因为服务器实例 ID 84805370821310100server 表中的任何 ID 都不匹配。
// Continued from above code
const seller = await Seller.findOne({ where: { title: sellerTitle }});
const ignoredSeller = await server.addSeller(seller);

// Executing (default): INSERT INTO `ignored_sellers` (`serverId`,`sellerId`) VALUES (84805370821310100,'amp');
// Failed to insert ignored seller: ForeignKeyConstraintError [SequelizeForeignKeyConstraintError]: SQLITE_CONSTRAINT: FOREIGN KEY constraint failed
是什么导致这种情况发生?

最佳答案

你必须像这样定义 IgnoredSeller -
在这里输入代码
const IgnoredSeller = sequelize.define(
"ignored_seller",
{
卖家 ID:Sequelize.INTEGER,
serverId:Sequelize.INTEGER,
},
{
时间戳:假
}
)

关于javascript - 主键整数返回在查找时递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66929068/

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