最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何使用Sequelize创建多对多表?

IT培训 admin 5浏览 0评论

如何使用Sequelize创建多对多表?

[我正在尝试使用Sequelize创建关系表,但是当我运行sequelize.sync()创建关系表时,他正在创建一个没有'id'字段的表,并定义了应为外键(例如主键)的字段。

执行此操作的特定方法是什么?

代码(就像官方文档一样推荐):

Project.belongsToMany(User, {through: 'UserProject'});
User.belongsToMany(Project, {through: 'UserProject'});

两个型号:

const Project = sequelize.define('Project', {
    name: Sequelize.STRING,
    price: {
        type: Sequelize.FLOAT(10, 2),
        validate: {
            isFloat: true,
        }
    }
}, {
    tableName: "project"
});
const User = sequelize.define('User', {
    username: {
        type: Sequelize.STRING(40),
        unique: true,
        allowNull: false,
        validate: {
            notEmpty: true,
        }
    },
    description: Sequelize.STRING(200),
}, {
    tableName: 'user',
});

生成的Mysql表:

| Field      | Key |
| ---------- | --- |
| createdAt  |     |
| updatedAt  |     |
| userId     | PRI |
| projectId  | PRI |
回答如下:

我认为这是正确的。您要描述的表称为联接表,该联接表通过其记录将UserProject链接在一起。您可以将其读为“用户1具有项目2”,“用户3具有项目5”等。该表不存储任何其他数据,仅用于链接两个模型。我认为您可以根据Sequelize文档使用user.getProjects()查询它。

如何使用Sequelize创建多对多表?

[我正在尝试使用Sequelize创建关系表,但是当我运行sequelize.sync()创建关系表时,他正在创建一个没有'id'字段的表,并定义了应为外键(例如主键)的字段。

执行此操作的特定方法是什么?

代码(就像官方文档一样推荐):

Project.belongsToMany(User, {through: 'UserProject'});
User.belongsToMany(Project, {through: 'UserProject'});

两个型号:

const Project = sequelize.define('Project', {
    name: Sequelize.STRING,
    price: {
        type: Sequelize.FLOAT(10, 2),
        validate: {
            isFloat: true,
        }
    }
}, {
    tableName: "project"
});
const User = sequelize.define('User', {
    username: {
        type: Sequelize.STRING(40),
        unique: true,
        allowNull: false,
        validate: {
            notEmpty: true,
        }
    },
    description: Sequelize.STRING(200),
}, {
    tableName: 'user',
});

生成的Mysql表:

| Field      | Key |
| ---------- | --- |
| createdAt  |     |
| updatedAt  |     |
| userId     | PRI |
| projectId  | PRI |
回答如下:

我认为这是正确的。您要描述的表称为联接表,该联接表通过其记录将UserProject链接在一起。您可以将其读为“用户1具有项目2”,“用户3具有项目5”等。该表不存储任何其他数据,仅用于链接两个模型。我认为您可以根据Sequelize文档使用user.getProjects()查询它。

发布评论

评论列表 (0)

  1. 暂无评论