gpt4 book ai didi

node.js - 每当我尝试将服务器添加到用户模型时,Sequelize 不会在直通/联结表中添加记录

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

我有一个 ServerUser 模型,我在它们之间设置了一个 many-to-many 关系,如下所示:

User.belongsToMany(Server, { through: 'Server_Users' });
Server.belongsToMany(User, { through: 'Server_Users' });
然后我通过他的 id 获取用户,创建一个服务器并尝试将服务器添加到用户,如下所示:
let user = await User.findByPk(userId)

let socketServer = await Server.create({
name: name,
thumbnail: thumbnail,
userId: userId
});

await user.addServer(socketServer)
这会在数据库中创建和插入服务器,但是,它不会在联结 server_users 表中创建用户和服务器之间的关系。我也没有收到任何错误,所以我不知道发生了什么。
日志显示服务器的 INSERT,然后是某种更新:
Executing (default): SELECT `id`, `username`, `password`, `email`, `createdAt`, `updatedAt` FROM `users` AS `user` WHERE `user`.`id` = '1';
Executing (default): INSERT INTO `servers` (`id`,`userId`,`name`,`thumbnail`,`endpoint`,`rooms`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?,?,?,?,?);
Executing (default): UPDATE `servers` SET `userId`=?,`updatedAt`=? WHERE `id` IN (25)

最佳答案

试试这个。

await user.addServer(Server, socketServer);
来自文档 https://sequelize.org/master/class/lib/associations/belongs-to-many.js~BelongsToMany.html#instance-method-add
顺便说一句,如果您这样做,您将使用 2 个 DB 调用。您可以使用 .createServer 方法将其减少为 1。
请在此处阅读: https://sequelize.org/master/class/lib/associations/belongs-to-many.js~BelongsToMany.html#instance-method-create

关于node.js - 每当我尝试将服务器添加到用户模型时,Sequelize 不会在直通/联结表中添加记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63027508/

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