2017-01-23 11 views
1

私はMysqlの既存のデータベースを使用してアプリケーションを作成しています。 テーブルから値を取得できますが、関連モデルから値を取得しようとすると機能しません。belongsTo関係から値を取得することを続ける

発注モデル:

"use strict"; 

module.exports = (sequelize, DataTypes) => { 
    var PurchaseOrder = sequelize.define('purchase_orders' , { 
    id: { 
    type: DataTypes.INTEGER(11), 
    allowNull: false, 
    primaryKey: true, 
    autoIncrement: true, 
    field: 'id' 
    }, 
    purchaseDate: { 
    type: DataTypes.DATE, 
    allowNull: true, 
    field: 'purchase_date' 
    }, 
    supplierId: { 
    type: DataTypes.INTEGER(11), 
    allowNull: true, 
    // references: { 
//  model: 'suppliers', 
//  key: 'id' 
// }, 
    field: 'supplier_id' 
    }, 
    requestedById: { 
    type: DataTypes.INTEGER(11), 
    allowNull: true, 
    field: 'requested_by_id' 
    }, 
    masterPurchaseOrderId: { 
    type: DataTypes.INTEGER(11), 
    allowNull: true, 
// references: { 
//  model: 'master_purchase_orders', 
//  key: 'id' 
// }, 
    field: 'master_purchase_order_id' 
    }, 
    createdAt: { 
    type: DataTypes.DATE, 
    allowNull: false, 
    field: 'created_at' 
    }, 
    updatedAt: { 
    type: DataTypes.DATE, 
    allowNull: false, 
    field: 'updated_at' 
    } 
},{ 
    classMethods:{ 
    associate: (models) => { 
     PurchaseOrder.belongsTo(models.masterPurchaseOrders,{ 
     foreignkey: 'master_purchase_order_id' 
     }); 
    }, 
    associate: (models) => { 
     PurchaseOrder.belongsTo(models.supplier,{ 
     foreignkey: 'supplier_id' 
     }); 
    }, 
    }, 
}, { 
    timestamps: true, 
    paranoid: false, 
    underscored: true, 
    freezeTableName: true, 
    tableName: 'purchase_orders' 
    }); 

    return PurchaseOrder; 
} 

発注コントローラー:

"using strict"; 
const purchaseOrder = require('../models/').purchase_orders; 
const Supplier = require('../models/').supplier; 
const Master = require('../models/').masterPurchaseOrders; 

module.exports= { 
    index(req, res) { 
    purchaseOrder 
     .findAll({ 
     include:[Supplier, Master] 
     }) 
     .then((masters) => { 
     res.status(200).json(masters); 
     }) 
     .catch((error) => { 
     res.status(500).json(error); 
     }); 
    }, 
    create(req, res) { 
    purchaseOrder 
     .create(req.body) 
     .then(master => { 
     res.status(200).json(master); 
     }) 
     .catch(error => { 
     res.status(500).json(error); 
     }); 
    }, 
}; 

私は(関数のfindAllでモデルのサプライヤーが含まれている場合)。購入からのデータとサプライヤーからのデータを取得します。 しかし、私はモデルのマスター購入注文を含める。私は空のjsonを得る。

答えて

0

を行うことができ、あなたのclassMethodsassociateプロパティを上書きするので、それはだ、とだけ二associate()機能が実行されます。

あなたは一つの関数にあなたの関連定義の両方を移動する必要があります。

classMethods:{ 
    associate: (models) => { 
     PurchaseOrder.belongsTo(models.masterPurchaseOrders,{ 
      foreignkey: 'master_purchase_order_id' 
     }); 
     PurchaseOrder.belongsTo(models.supplier,{ 
      foreignkey: 'supplier_id' 
     }); 
    }, 
}, 
0

purchaseOrder 
     .findAll({ 
     include:[{model: Supplier, required}, {model: Master, required : false}] 
     }) 
関連する問題