模型(用户)如何只有一个其他模型(例如工作场所),但是工作场所属于sequelize.js中的许多用户



我想拥有一个属于一个其他模型(应该是工作场所(的模型(这是用户(,但是工作场所(例如,Apple(应该有许多属于他们的用户。我该如何使用semelize?

我已经尝试使用一个User.hasOne(models.Workplace),但是这仅允许每个工作场所都有一个用户,因为它在工作场所表中创建了UserId列。

这是我用户模型的代码:

module.exports = (sequelize, DataTypes) => {
    const User = sequelize.define('User', {
        id: {
            autoIncrement: true,
            primaryKey: true,
            type: DataTypes.INTEGER
        },
        username: {
            type: DataTypes.STRING
        },
        firstname: {
            type: DataTypes.STRING
        }
    }, {})
    User.associate = (models) => {
        models.User.hasOne(models.User)
    }
    return User
}

这是我的工作场所模型的代码:

module.exports = (sequelize, DataTypes) => {
    const Workplace = sequelize.define('Workplace', {
        id: {
            type: DataTypes.INTEGER,
            autoIncrement: true,
            primaryKey: true
        },
        name: {
            type: DataTypes.STRING
        }
    }, {})
    return Workplace
}

谢谢!

让我们在较低级别上考虑这个问题。

我假设您使用某种关系数据库,因为您在其顶部使用了续集。

您的要求是用户只有另一个模型(例如工作场所(,但是工作场所属于许多用户。

可以将其转换为user模型在其表格中具有外键workplaceId,并且workspace在其表中没有外键。

例如,{ userId: 1, workspaceId: 1 }, { userId: 2, workspaceId: 1 }, { workspaceId: 1 }将是您所期望的。

我们如何实现这一目标?

仅在user模型中设置belongsTo关系。(它在您的表中生成workspaceId(

首先在数据库层中思考总是很好的,因为毕竟Sequelize只是一个抽象的层。

最新更新