续集属于关联给出错误“表名”联系人“指定了多次”

我正在尝试通过模型将模型连接到模型。当我喜欢下面时,错误返回:未处理的拒绝 Sequelize数据库错误:多次指定的表名“联系人”。在这种情况下,关联/“as”是否正确?当我尝试包含模型时发生错误。我还插入了带有初始电话行的表。phonecontactcontact_phone.findAllcontact_phone


exports.findAll = (req, res) => {

  models.contact.findAll({

    include: [

      { 

        model: models.contact_phone, 

        as: 'contact'

      } 

    ]

  })

    .then(contacts => {

    res.status(200).send(contacts);

  });

};

模型


module.exports = (sequelize) => {

  const Contact = sequelize.define(

    'contact',

    {

      contact_id: {

        type: Sequelize.BIGINT,  

        primaryKey: true,

        autoIncrement: true,

        field: 'contact_id'

      },

      first_name: {

        type: Sequelize.STRING,

        field: 'first_name'

      },

      last_name: {

        type: Sequelize.STRING,

        field: 'last_name',

      },

      created_at: {

        type: Sequelize.DATE,

        field: 'created_at'

      },

      updated_at: {

        type: Sequelize.DATE,

        field: 'updated_at'   

      }

    },

    {

      tableName: 'contacts',

      freezeTableName: true,

    }

  );


  Contact.associate = (models) => {

    Contact.belongsTo(models.contact_phone, {foreignKey: 'contact_id', as: 'contact'});

    Contact.hasOne(models.phone, {foreignKey: 'phone_id', through: models.contact_phone});

  };


  return Contact;

};


module.exports = (sequelize) => {

  const ContactPhone = sequelize.define(

    'contact_phone',

    {

      contact_id: {

        type: Sequelize.BIGINT,

        references: {

          model: 'contact',

          key: 'contact_id'

        }

      },

      phone_id: {

        type: Sequelize.STRING,

        references: {

          model: 'phone',

          key: 'phone_id'

        }

      }

    }

  );


  ContactPhone.associate = (models) => {

    ContactPhone.belongsTo(models.phone, {foreignKey: 'phone_id', as: 'phone'});

    ContactPhone.belongsTo(models.contact, {foreignKey: 'contact_id', as: 'contact'});

  };


  return ContactPhone;

};


慕婉清6462132
浏览 114回答 1
1回答

LEATH

你可以这样做。你没有包括额外的contact_phone你可以直接用这样的联系和电话来做。触点模块:module.exports = (sequelize) => {    const Contact = sequelize.define(        'contact',        {            contact_id: {                type: Sequelize.INT,                primaryKey: true,                autoIncrement: true,                field: 'contact_id'            },            first_name: {                type: Sequelize.STRING,                field: 'first_name'            },            last_name: {                type: Sequelize.STRING,                field: 'last_name',            },            created_at: {                type: Sequelize.DATE,                field: 'created_at'            },            updated_at: {                type: Sequelize.DATE,                field: 'updated_at'            }        },        {            tableName: 'contacts',            freezeTableName: true,        }    );    Contact.associate = (models) => {        Contact.hasOne(models.phone, { // has many or hasOne relationship .here read like contact has one phone             foreignKey: 'phone_id',            onDelete: "CASCADE"        });    };    return Contact;};手机模块:module.exports = (sequelize) => {    const Phone = sequelize.define(        'phone',        {            phone_id: {                type: Sequelize.INT,                primaryKey: true,                autoIncrement: true,                field: 'phone_id'            },            contact_id: {                type: Sequelize.INT,            },            updated_at: {                type: Sequelize.DATE,                field: 'updated_at'            },            created_at: {                type: Sequelize.DATE,                field: 'created_at'            }        },        {            tableName: 'phones',            freezeTableName: true,        }    );    Phone.associate = (models) => {        Phone.belongsTo(models.contact, {            foreignKey: 'contact_id',            as: 'contact',            onDelete: "CASCADE"        });    };}您的查询如下所示:models.contact.findAll({    include: [        {            model: models.phone,            as: 'contact'        }    ]}).then(contacts => {    res.status(200).send(contacts);});编辑:如何定义具有相同键和不同别名的更多关联Phone.associate = (models) => {    Phone.belongsTo(models.contact, {        foreignKey: 'contact_id',        as: 'contact',        onDelete: "CASCADE"    });    Phone.belongsTo(models.contact, {        foreignKey: 'contact_id',        as: 'phone',        onDelete: "CASCADE"    });};
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript