【问题标题】:Node.JS & Sequelize defining relationsNode.JS 和 Sequelize 定义关系
【发布时间】:2017-12-28 13:32:22
【问题描述】:

有 2 个模型,客户和订单 在模型中顺序定义

Order.belongsTo(Customer {foreignKey: 'customer_id', as: 'customer'});

在模型客户定义中

Customer.hasMany(Order, {foreignKey: 'customer_id', as: 'orders'});

遇到这个错误

Error: customer.hasMany called with something that's not a subclass of Sequelize.Model

....

如何正确定义这些?

感谢您的帮助

【问题讨论】:

    标签: javascript node.js sequelize.js


    【解决方案1】:

    试试这个

        var config = require('../config/environment');
        var Sequelize = require('sequelize');
    
        var db = {
          Sequelize,
          sequelize: new Sequelize(config.mysql.uri, config.mysql.options)
        };
    
       db.Customer = db.sequelize.import(modal_path);  //your schema
       db.Order = db.sequelize.import(modal_path);  //your schema
    
       db.Customer.hasMany(db.Order, {
          foreignKey: 'customer_id'
        });
    
        db.Order.belongsTo(db.Customer, {
          foreignKey: 'customer_id',
          targetKey: 'Id'
        });
    

    【讨论】:

      【解决方案2】:

      我的猜测是你定义了一个模型和它的关联同一个文件。我建议您在与模型文件不同的文件中定义关联。例如:

      • order.js:定义Order模型
      • customer.js:定义Customer模型
      • association.js:定义OrderCustomer之间的关联

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-26
        • 1970-01-01
        • 1970-01-01
        • 2017-01-27
        • 1970-01-01
        • 2015-07-27
        • 2021-11-13
        相关资源
        最近更新 更多