node.js - 每当我尝试将服务器添加到用户模型时,Sequelize 不会在直通/联结表中添加记录
问题描述
我有一个Server
和User
模型,我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);
顺便说一句,如果你这样做,你将使用 2 个 DB 调用。您可以使用 .createServer 方法将其减少为一个。
推荐阅读
- r - R如何可视化成对对齐
- vb.net - VB.NET 服务单击一次
- javascript - 如何在if语句jQuery中设置超时
- c++ - 为什么更改包含 psapi.h 的顺序会导致编译错误?(标识符 BOOL 未定义)
- maven - tomcat-8.0.20 - Javamail 不发送带有附件的电子邮件
- python-3.x - 如何将动态参数作为参数传递
- java - GET 客户请求上带有 resttemplate Whitelabel 错误页面的 SpringREST API
- php - 如何使用 php 应用程序更改 php.ini 中的值
- haskell - 区别:GADT,数据族,即为 GADT 的数据族
- java - 使用 docx4j 在 Word 文件中的日期输出格式