создать 2 модели иностранного:sequelize: Создать новую запись с существующим ключом
userPreferenceCategories = sequelize.define("userPreferenceCategories", {
id : {
type : Sequelize.INTEGER,
autoIncrement : true,
primaryKey : true,
allowNull : false
},
name : {
type : Sequelize.STRING,
allowNull : false
}
}, {
indexes: [
{
unique : true,
fields : ["name"]
}
],
freezeTableName : true
});
и
userPreferenceCategoryTypes = sequelize.define("userPreferenceCategoryTypes", {
id : {
type : Sequelize.INTEGER,
autoIncrement : true,
primaryKey : true,
allowNull : false
},
name : {
type : Sequelize.STRING,
allowNull : false
}
}, {
indexes: [
{
unique : true,
fields : ["name", "userPreferenceCategoryId"]
}
],
freezeTableName : true
});
С соотношением:
userPreferenceCategoryTypes.belongsTo(userPreferenceCategories, {
onDelete : "cascade",
onUpdate : "cascade",
foreignKey : {
field : "userPreferenceCategoryId",
allowNull : false,
}
});
одно время, я создаю запись userPreferenceCategories :
userPreferenceCategories.upsert({name : "cat1"});
во второй раз, я хотел бы создать адъюнктом userPreferenceCategoryTypes на "cat1", как это:
userPreferenceCategoryTypes.upsert({
name : "type1",
userPreferenceCategory : {
name : "cat1"
}
}, {
include: [ {
model : userPreferenceCategories
} ]
});
, но это не работает с сообщением:
Unhandled rejection SequelizeValidationError: notNull Violation: userPreferenceCategoryId cannot be null
В самом деле, sequelize делает похоже, не добавляет атрибут userPreferenceCategoyId по запросу sql. Как я могу вставить новую запись в userPreferenceCategoryTypes этого foreignKey cat? Я не выполняю это по серии.
EDIT 1:
Я нашел решение, но я не уверен, что лучше:/
userPreferenceCategory.find({where: {name: "cat1"}}).then(function (cat) {
UserPreferenceCategoryType.create({
name : "type1",
userPreferenceCategoryId : cat.getDataValue("id")
});
});