[英]sequelize many to many association join table not populating
I have a many to many association between two models Hospital
and Contact
. 我在两种模式的Hospital
和Contact
之间有很多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.