Sequelize models - 在 Node 中同步时设置关联
Posted
技术标签:
【中文标题】Sequelize models - 在 Node 中同步时设置关联【英文标题】:Sequelize models - Setting associations when syncing in Node 【发布时间】:2021-04-15 19:08:20 【问题描述】:我正在尝试正确设置我的关联,以便当我在 Postman 中发出 GET 请求时它们可以获取外键值。出于某种原因,当我尝试同步它们时,在 Pgadmin4 的末尾创建了一个新列,而不是在开始时与主列值匹配。
我知道 Sequelize 旨在选择正确的字段进行匹配,但它似乎总是为正在匹配的表选择错误的字段。当它们在我的服务器文件中初始化时,有没有一种方法可以更具体?我以前使用过 phpmyAdmin 并且没有任何麻烦,但这没有 ORM。
我知道 Sequelize 文档中的急切加载,这就是我设法从它们中整理出来的。我是否总是需要在我的服务器文件和模型中有关联?或者我可以只有一个吗?我已经构建了我的表,通过正确初始化服务器文件中的值上传了我的主要数据,但是我永远无法加载外键字段,并且我的请求中从未返回包含语句。
我有没有办法在两个表上指定列名,以便在初始同步时正确设置关联?此刻我遇到了一个问题,是否正在使用连接的外键名称的生成名称创建列。
我是否应该在每个表中创建一个索引列,以便创建这个额外的列以匹配其他表?我不知道如何自动递增每个条目以匹配主条目键(当我尝试在 pgAdmin 中设置外键时不允许外键)。
【问题讨论】:
【参考方案1】:终于整理好了。最好的方法是用不同的数字为每个“as”键编号,这样当您进行 findAll include 调用时,您可以立即识别问题。我可能做了一些额外的工作,但它会产生与我的外键值相关的额外字段数据。
exports.adminUserList = (req, res) =>
console.log("usegfu")
users.findAll(
include: [
model: diveLog, as: 'userID_FK1',
,
model: userRole, as: 'userRoleID_FK1',
,
model: article, as: 'userID_FK3',
,
model: posts, as: 'userID_FK7',
,
model: photos, as: 'userID_FK5',
],
)
.then((users) =>
server.js - 匹配表模型的关联
diveLog.belongsTo(userLogin, foreignKey: "userID", as: 'userID_FK', constraints: true, onDelete: 'cascade');
userLogin.hasMany(diveLog, foreignKey: "userID", as: 'userID_FK1',constraints: true, onDelete: 'cascade');
article.belongsTo(userLogin, foreignKey: "userID", as: 'userID_FK2',constraints: true, onDelete: 'cascade');
userLogin.hasMany(article, foreignKey: "userID", as: 'userID_FK3',constraints: true, onDelete: 'cascade');
photos.belongsTo(userLogin, foreignKey: "userID", as: 'userID_FK4',constraints: true, onDelete: 'cascade')
userLogin.hasMany(photos, foreignKey: "userID", as: 'userID_FK5',constraints: true, onDelete: 'cascade');
posts.belongsTo(userLogin, foreignKey: "userID", as: 'userID_FK6',constraints: true, onDelete: 'cascade');
userLogin.hasMany(posts, foreignKey: "userID", as: 'userID_FK7',constraints: true, onDelete: 'cascade');
【讨论】:
以上是关于Sequelize models - 在 Node 中同步时设置关联的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Node.JS 中向 sequelize.js 添加自定义函数?