我希望有一个模型(即用户)属于一个其他模型(应为工作场所),但是工作场所(例如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
}
谢谢!
答案 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
只是一个抽象层。