[英]Sequelize only consider one association at a time
我正在使用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;
}
Order
和Worker
作品之間1-to-Many
關聯( workerId
被導入Order
)。
但是我不能讓聯想1-to-1
之間的Sale
和Worker
和一個與Order
和Sale
同時工作。 當時它是可行的。 這意味着我只能將orderId
或workerId
設置為Sale
模型,但不能同時包含兩者,這是我需要實現的。
我需要有兩個1-to-1
關系Sale & Order
之間,以及Sale & Worker
。
您能發現我可能錯過或濫用的任何東西嗎? 謝謝
我發現自己在做什么錯。 我正在兩個具有相同名稱的獨立函數中創建associate
。 我通過將關聯移動到相同的函數中來修復它,如下所示:
Sale.associate = function (models) {
models.Sale.belongsTo(models.Order, { foreignKey: "orderId", constraints: false });
// Will put workerId into Sale
models.Sale.belongsTo(models.Worker, { foreignKey: "workerId", constraints: false });
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.