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

时间:2019-07-04 08:45:52

标签: javascript node.js express sequelize.js

我希望有一个模型(即用户)属于一个其他模型(应为工作场所),但是工作场所(例如Apple)应该有许多用户属于他们。如何使用Sequelize做到这一点?

我已经尝试使用一个User.hasOne(models.Workplace),但这仅允许每个Workplace拥有一个User,因为它在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
}

谢谢!

1 个答案:

答案 0 :(得分:0)

让我们从较低的角度考虑这个问题。

我假设您使用某种关系数据库,因为您在它之上使用了Sequelize。

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

可以将其转换为import numpy as np x = np.array([1,2,3]) y = np.array([4,5,6]) z = np.array([7,8,9]) def func( xval, yval, zval ): return np.sin(xval**2) + np.sin( yval**2 ) + np.sin( zval**2 ) results = np.zeros( shape=( len(x) , len(y) , len(z) ) ) for i in range(len(x)): for j in range(len(y)): for k in range(len(z)): results[i,j,k] = func( x[i], y[j], z[k] ) 模型,其表中具有外键user,而表workplaceId中没有外键。

例如,workspace就是您所期望的。

我们如何实现这一目标?

只需在{ userId: 1, workspaceId: 1 }, { userId: 2, workspaceId: 1 }, { workspaceId: 1 }模型中设置belongsTo关系。 (它会在您的表格中生成user

首先考虑数据库层总是一件好事,因为毕竟workspaceId只是一个抽象层。