如何在 feathersjs 的 join table 中使用 feather-sequelize 设置 belongsToMany 关系与附加属性
How to setup belongsToMany Relation with additionnal attribute in the join table in featherjs with feather-sequelize
我想在两个带有羽毛续集的模型之间添加多对多关系,并在连接中添加 table,我想添加附加属性。 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 })
但是当我在我的 feather 应用程序中定义一个新模型时,它没有在数据库中创建,所以我的关系不起作用
只是为了检查我是否理解正确:你想要一个 link table(例如 user_projects
),并将 UserProjects
模型映射到它,从而在 User
和 Project
模型之间创建多对多关系?
您可以使用 hasMany
和 belongsTo
函数,而不是 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'
});
并且您需要将 link table 中的 user_id
和 project_id
列定义为外键。
然后你可以在你的 link table 中添加你想要的任何其他属性(status
或其他任何东西,都没有关系)
我想在两个带有羽毛续集的模型之间添加多对多关系,并在连接中添加 table,我想添加附加属性。 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 })
但是当我在我的 feather 应用程序中定义一个新模型时,它没有在数据库中创建,所以我的关系不起作用
只是为了检查我是否理解正确:你想要一个 link table(例如 user_projects
),并将 UserProjects
模型映射到它,从而在 User
和 Project
模型之间创建多对多关系?
您可以使用 hasMany
和 belongsTo
函数,而不是 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'
});
并且您需要将 link table 中的 user_id
和 project_id
列定义为外键。
然后你可以在你的 link table 中添加你想要的任何其他属性(status
或其他任何东西,都没有关系)