sequelize.js - 如何使用feather-sequelize在featherjs的连接表中设置belongsToMany关系和附加属性
问题描述
我想在两个带有羽毛续集的模型之间添加多对多关系,并且在连接表中,我想添加附加属性。sequelize 的文档很清楚:我必须创建一个新模型,我喜欢这样的使用
const User = sequelize.define('user', {})
const Project = sequelize.define('project', {})
const UserProjects = sequelize.define('userProjects', {
status: DataTypes.STRING
})
User.belongsToMany(Project, { through: UserProjects })
Project.belongsToMany(User, { through: UserProjects })
但是当我在我的羽毛应用程序中定义一个新模型时,它没有在数据库中创建,所以我的关系不起作用
解决方案
只是为了检查我是否理解正确:您想要一个链接表(例如user_projects
),并将模型映射到它,从而在UserProjects
模型之间创建多对多关系?User
Project
您可以使用hasMany
andbelongsTo
函数,而不是belongsToMany
像:
User.hasMany(UserProjects, {
as: 'UserProjects',
foreignKey: 'user_id' // this is what you're missing
});
Project.hasMany(UserProjects, {
as: 'UserProjects',
foreignKey: 'project_id' // this is what you're missing
});
UserProjects.belongsTo(User, {
as: 'Users',
foreignKey: 'user_id'
});
UserProjects.belongsTo(Projects, {
as: 'Projects',
foreignKey: 'project_id'
});
并且您需要将链接表中的user_id
和project_id
列定义为外键。
然后您可以在链接表中添加您想要的任何其他属性(status
或其他任何属性,没关系)
推荐阅读
- node.js - 如何根据下拉列表中选择的值添加新的 div
- reactjs - 如何为 react-calendar 创建事件
- angular - Angular 2+ @ng-select/ng-select:如何更改键、值数组
- anylogic - 在 RunTime 之前编辑参数
- c# - 替换自定义键盘键以出现在 C# 的 RichTextbox 中
- c++ - 如何使用犰狳 c++ 库计算 Excel Percentile.exc?
- file - 读取大于 500 MB 的文件时 Luajit “内存不足”
- windows-10 - 在 Windows 10 中更改用户名后如何收回配置文件文件夹的权限?
- visual-studio-code - VSCode 如何找回菜单?
- node.js - 来自 module.js 的 app.js 中的触发函数