[英]How to create a sequelize model with 2 foreign keys referencing the same table
我創建了這個續集 model 來存儲員工詳細信息,但由於某種原因,沒有創建外鍵,這些是我采用的模型和方法
部門 Model
module.exports = (sequelize, Sequelize) => {
const Department = sequelize.define("department",{
department_id:{
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
allowNull: false,
unique: true,
primaryKey:true
},
supervisor_id:{
type: Sequelize.UUID,
allowNull: true,
references:{
model:"users",
key:"user_id"
}
},
employee_id:{
type: Sequelize.UUID,
allowNull: true,
references:{
model:"users",
key:"user_id"
}
}
})
return Department
}
用戶 Model
module.exports = (sequelize, Sequelize) => {
const User = sequelize.define("user",{
user_id:{
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
allowNull: false,
unique: true,
primaryKey:true
},
username:{
type: Sequelize.STRING,
allowNull: false,
},
password:{
type: Sequelize.STRING,
allowNull: false,
},
email:{
type: Sequelize.STRING,
allowNull: false,
unique: true,
},
date_of_birth:{
type: Sequelize.DATE,
allowNull: false,
},
phone_number:{
type: Sequelize.STRING,
allowNull: false,
unique: true,
}
})
return User
}
這些是我試圖做出限制的方法
一:這個創建表但是約束不起作用,我無法獲取用戶數據
db.users.hasMany(db.matches, {as: 'employee_id_fk', foreignKey: 'employee_id'});
db.users.hasMany(db.matches, {as: 'supervisor_id_fk', foreignKey: 'supervisor_id'});
二:這個方法給我一個Error: Cyclic dependency found. users is dependent of itself. Dependency chain: users -> matches => users
Error: Cyclic dependency found. users is dependent of itself. Dependency chain: users -> matches => users
db.matches.hasMany(db.users, {as: 'employee_id_fk', foreignKey: 'employee_id'});
db.matches.hasMany(db.users, {as: 'supervisor_id_fk', constraints: false, allowNull:true, defaultValue:null});
db.users.belongsTo(db.matches, {foreignKey: 'employee_id', constraints: false, allowNull:true, defaultValue:null})
db.users.belongsTo(db.matches, {foreignKey: 'supervisor_id', constraints: false, allowNull:true, defaultValue:null})
三:這個方法也報上面的錯誤
db.users.belongsTo(db.matches, {foreignKey: 'employee_id'})
db.users.belongsTo(db.matches, {foreignKey: 'supervisor_id'})
有沒有辦法解決這個問題,我嘗試了 StackOverflow 的多種解決方案,但無法讓它工作。
我創建了這個續集 model 來存儲員工詳細信息,但由於某種原因,沒有創建外鍵,這些是我采用的模型和方法
部門 Model
module.exports = (sequelize, Sequelize) => {
const Department = sequelize.define("department",{
department_id:{
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
allowNull: false,
unique: true,
primaryKey:true
},
supervisor_id:{
type: Sequelize.UUID,
allowNull: true,
references:{
model:"users",
key:"user_id"
}
},
employee_id:{
type: Sequelize.UUID,
allowNull: true,
references:{
model:"users",
key:"user_id"
}
}
})
return Department
}
用戶 Model
module.exports = (sequelize, Sequelize) => {
const User = sequelize.define("user",{
user_id:{
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
allowNull: false,
unique: true,
primaryKey:true
},
username:{
type: Sequelize.STRING,
allowNull: false,
},
password:{
type: Sequelize.STRING,
allowNull: false,
},
email:{
type: Sequelize.STRING,
allowNull: false,
unique: true,
},
date_of_birth:{
type: Sequelize.DATE,
allowNull: false,
},
phone_number:{
type: Sequelize.STRING,
allowNull: false,
unique: true,
}
})
return User
}
這些是我試圖做出限制的方法
一:這個創建表但是約束不起作用,我無法獲取用戶數據
db.users.hasMany(db.matches, {as: 'employee_id_fk', foreignKey: 'employee_id'});
db.users.hasMany(db.matches, {as: 'supervisor_id_fk', foreignKey: 'supervisor_id'});
二:這個方法給我一個Error: Cyclic dependency found. users is dependent of itself. Dependency chain: users -> matches => users
Error: Cyclic dependency found. users is dependent of itself. Dependency chain: users -> matches => users
db.matches.hasMany(db.users, {as: 'employee_id_fk', foreignKey: 'employee_id'});
db.matches.hasMany(db.users, {as: 'supervisor_id_fk', constraints: false, allowNull:true, defaultValue:null});
db.users.belongsTo(db.matches, {foreignKey: 'employee_id', constraints: false, allowNull:true, defaultValue:null})
db.users.belongsTo(db.matches, {foreignKey: 'supervisor_id', constraints: false, allowNull:true, defaultValue:null})
三:這個方法也報上面的錯誤
db.users.belongsTo(db.matches, {foreignKey: 'employee_id'})
db.users.belongsTo(db.matches, {foreignKey: 'supervisor_id'})
有沒有辦法解決這個問題,我嘗試了 StackOverflow 的多種解決方案,但無法讓它工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.