找到循环依赖

时间:2019-12-08 14:04:50

标签: node.js sequelize.js

我遇到以下错误:

  

未处理的拒绝错误:发现循环依赖性。优惠券为   取决于自己。依赖链:优惠券->订单=>优惠券

我的order.js模型如下所示:

'use strict';

module.exports = (sequelize, DataTypes) => 
{
    var Order = sequelize.define('orders', 
    {
        id: 
        {
              allowNull: false,
              autoIncrement: true,
              primaryKey: true,
              type: DataTypes.INTEGER
        },

        userid: 
        {
            type: DataTypes.INTEGER,

            references: 
            {
                model: 'users',
                key: 'id'
            }
        },

        coupon_id:
        {
            type: DataTypes.INTEGER,
            allowNull: true,

            references: 
            {
                model: 'coupons',
                key: 'id'
            },

        },

        product: 
        {
            type: DataTypes.INTEGER,

            references: 
            {
                model: 'products',
                key: 'id'
            }
        },

        address: 
        {
            type: DataTypes.INTEGER,

            references: 
            {
                model: 'address',
                key: 'id'
            }
        },

        canceled:
        {
            type: DataTypes.INTEGER,
            defaultValue: 0
        },

        quantity: 
        {
            type: DataTypes.INTEGER,
        },

        note: 
        {
            allowNull: true,
            type: DataTypes.STRING
        },

    },

    {
        freezeTableName: true,
        tableName: 'orders',
        createdAt: 'createdat',
        updatedAt: 'updatedat',

    });

    Order.associate = models => {
        Order.hasMany(models.coupons, {
          foreignKey: 'id',
          onDelete: 'cascade',
          onUpdate: 'cascade',
          constrains: false
        });
      };


    return Order;
};


coupon.js看起来像这样:

'use strict';

module.exports = (sequelize, DataTypes) => 
{
    var Coupon = sequelize.define('coupons', 
    {
        id: 
        {
              allowNull: false,
              autoIncrement: true,
              primaryKey: true,
              type: DataTypes.INTEGER
        },

        name: 
        {
             type: DataTypes.STRING
        },

        code: 
        {
             type: DataTypes.STRING
        },

        discount:
        {
             type: DataTypes.FLOAT
        },

        expires: 
        {
              type: 'TIMESTAMP',
        },

        created_by: 
        {
              type: DataTypes.INTEGER,

              references: 
              {
                    model: 'users',
                    key: 'id'
              },

        },

        maxuse: 
        {
              type: DataTypes.INTEGER,
        },

    },
    {
        freezeTableName: true,
        tableName: 'coupons',
        createdAt: 'createdat',
        updatedAt: 'updatedat'

    });


    Coupon.associate = models => {
      Coupon.belongsTo(models.orders, 
      {
        foreignKey: 'id',
        onDelete: 'cascade',
        onUpdate: 'cascade',
      });
    };


    return Coupon;
};

看来我在关联方面做错了。任何帮助将不胜感激。

注意:每当我在orders.js上注释coupon_id:时,错误就会消失。不过,我仍然需要此功能。

0 个答案:

没有答案