如何使用feather-sequelize在featherjs的联接表中使用additional属性设置belongsToMany Relation

时间:2019-01-09 21:34:50

标签: sequelize.js feathersjs feathers-sequelize

我想在两个带有羽毛序列化的模型之间添加多对多关系,并且在联接表中,我想添加additional属性。 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应用程序中定义一个新模型时,它没有在数据库中创建,因此我的关系无法正常工作

1 个答案:

答案 0 :(得分:0)

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

您可以使用hasManybelongsTo函数,而不是像这样的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或其他无关紧要的内容)