Я использую orm sequelizeJs для моделирования схемы базы данных в моем проекте nodeJs. БД является MySQL.
У меня есть 03 модели, которые определены следующим образом:
// Worker model
module.exports = (sequelize, DataTypes) => {
const Worker = sequelize.define("Worker", {
workerId: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
unique: true,
allowNull: false
}
}
//Will put workerId into Order
Worker.associate = function (models) {
models.Worker.hasMany(models.Order, { foreignKey: "workerId", constraints: false });
};
//Will put workerId into Sale
Worker.associate = function (models) {
models.Worker.hasMany(models.Sale, { foreignKey: "workerId", constraints: false });
};
return Worker;
}
// Order model
module.exports = (sequelize, DataTypes) => {
const Order = sequelize.define("Order", {
orderId: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
unique: true,
allowNull: false
}
}
// Will put workerId into Order
Order.associate = function (models) {
models.Order.belongsTo(models.Worker, {
foreignKey: "workerId",
targetKey: "workerId",
constraints: false
});
};
return Order;
}
// Sale model
module.exports = (sequelize, DataTypes) => {
const Sale = sequelize.define("Sale", {
saleId: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
unique: true,
allowNull: false
}
//Will put orderId into Sale
Sale.associate = function (models) {
models.Sale.belongsTo(models.Order, { foreignKey: "orderId", constraints: false });
};
// Will put workerId into Sale
Sale.associate = function (models) {
models.Sale.belongsTo(models.Worker, { foreignKey: "workerId", constraints: false });
};
return Sale;
}
Ассоциация 1-to-Many
между Order
и Worker
работает (workerId
импортируется в Order
).
Однако я не могу заставить работать связь 1-to-1
между Sale
и Worker
и связь между Order
и Sale
одновременно. Это либо один на тот момент, который работает. Это означает, что я могу ТОЛЬКО получить orderId
или workerId
в модели Sale
, но не оба, чего мне нужно достичь.
Мне нужны как 1-to-1
отношения между Sale & Order
, так и между Sale & Worker
.
Можете ли вы заметить что-то, что я мог пропустить или неправильно использовать?
Спасибо