简体   繁体   English

将不填充的多对多关联联接表

[英]sequelize many to many association join table not populating

I have a many to many association between two models Hospital and Contact . 我在两种模式的HospitalContact之间有很多Contact A record at contact is added but no entries in the association table hospitals_contacts . 添加了contact的记录,但关联表hospitals_contacts没有任何条目。 sequelize generated both foreign keys contact_id and hospital_id as a composite primary key. sequelize生成外键contact_id和hospital_id作为复合主键。

Contact Model 接触模型

module.exports = function(sequelize, DataTypes) {
    var Contact = sequelize.define("Contact", {

        job_title: DataTypes.STRING,
        first_name: DataTypes.STRING,
        last_name: DataTypes.STRING, 
        archived: DataTypes.BOOLEAN,
        primary_email: {

            type: DataTypes.STRING,
            validate: {
                isEmail: true
            }
        },
        business_number: DataTypes.STRING,
        number_extension: DataTypes.STRING,
        fax_number: DataTypes.STRING

    }, {

        underscored:'true',
        tableName: 'contacts',
        createdAt: false,
        updatedAt: false,

        classMethods: {
            associate: function(models) {
                Contact.belongsToMany(models.Hospital, { through: 'hospitals_contacts'});    
                Contact.belongsTo(models.Type);
                Contact.belongsTo(models.Region)
            }
        },
    });



    return Contact;
};

Hospital Model 医院模式

module.exports = function(sequelize, DataTypes) {

    var Hospital = sequelize.define("Hospital", {

        name: DataTypes.STRING,
        mak_code: DataTypes.STRING,
        licensed_tm_lab: DataTypes.BOOLEAN

    }, { 

        underscored:'true',
        tableName: 'hospitals',     
        createdAt: false,
        updatedAt: false,

        classMethods: {
            associate: function(models) {

                Hospital.belongsToMany(models.Contact, { through: 'HospitalsContacts'});
                Hospital.belongsTo(models.Address)
            }
        }
    }); 

    return Hospital;
};

api endpoint for adding contacts 用于添加联系人的api端点

var hospitalInstance = models.Hospital;
var contactData = req.body;

models.Contact.create({ 
    first_name: contactData.first_name, 
    last_name: contactData.last_name, 
    type_id: contactData.type,
    job_title: contactData.job_title, 
    primary_email: contactData.email, 
    business_number:contactData.phone_number,
    fax_number:contactData.fax,
    number_extension:contactData.extension,
    region_id: contactData.region,
    committee_id: contactData.committee,
    archived: false,
    hospitalInstance: {id:contactData.hospital}
    },
    {
        include: [hospitalInstance]

    });

I suggest you try the following: 我建议您尝试以下方法:

Change your "through" attribute in Contact to match the one in Hospital: HospitalsContacts, so you'd have: 在“联系人”中更改“通过”属性以匹配“医院:HospitalsContacts”中的属性,因此您将:

Contact.belongsToMany(models.Hospital, { through: 'HospitalsContacts'}); //Contact
Hospital.belongsToMany(models.Contact, { through: 'HospitalsContacts'}); //Hospital

Now I'm assuming you already have the hospital created and just want to create a new contact, associated with that hospital, is that correct? 现在,我假设您已经创建了医院,并且只想创建一个与该医院关联的新联系人,对吗? If so: 如果是这样的话:

var hospital = (...)

hospital.createHospitalContact({
   first_name: contactData.first_name, 
   last_name: contactData.last_name, 
   type_id: contactData.type,
   job_title: contactData.job_title, 
   primary_email: contactData.email, 
   business_number:contactData.phone_number,
   fax_number:contactData.fax,
   number_extension:contactData.extension,
   region_id: contactData.region,
   committee_id: contactData.committee,
   archived: false,
}).then(function(contact) {
   //Do something
})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM