首页 > 解决方案 > 如何使用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 })

但是当我在我的羽毛应用程序中定义一个新模型时,它没有在数据库中创建,所以我的关系不起作用

标签: sequelize.jsfeathersjsfeathers-sequelize

解决方案


只是为了检查我是否理解正确:您想要一个链接表(例如user_projects),并将模型映射到它,从而在UserProjects模型之间创建多对多关系?UserProject

您可以使用hasManyandbelongsTo函数,而不是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_idproject_id列定义为外键。

然后您可以在链接表中添加您想要的任何其他属性(status或其他任何属性,没关系)


推荐阅读