我想拥有一个属于一个其他模型(应该是工作场所(的模型(这是用户(,但是工作场所(例如,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
只是一个抽象的层。