簡體   English   中英

Sequelize一次只考慮一個關聯

[英]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;
}

OrderWorker作品之間1-to-Many關聯( workerId被導入Order )。

但是我不能讓聯想1-to-1之間的SaleWorker和一個與OrderSale同時工作。 當時它是可行的。 這意味着我只能將orderIdworkerId設置為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM