sequelize :使用现有外键创建新条目 [英] sequelize : Create new entry with existing foreign key
问题描述
我创建了 2 个模型:
I create 2 models :
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 条目:
one time, I create an userPreferenceCategories entry :
userPreferenceCategories.upsert({name : "cat1"});
第二次,我想在cat1"处创建一个 userPreferenceCategoryTypes 关联,如下所示:
in second time, I would like create an userPreferenceCategoryTypes associate at "cat1" like this :
userPreferenceCategoryTypes.upsert({
name : "type1",
userPreferenceCategory : {
name : "cat1"
}
}, {
include: [ {
model : userPreferenceCategories
} ]
});
但这不适用于消息:
Unhandled rejection SequelizeValidationError: notNull Violation: userPreferenceCategoryId cannot be null
其实sequelize好像没有在sql请求上添加userPreferenceCategoyId属性.如何在 userPreferenceCategoryTypes 中插入新条目 cat 的这个外键?我不会在连续剧中执行该操作.
In fact, sequelize does not seem to add userPreferenceCategoyId attribut on sql request. How can I insert new entry in userPreferenceCategoryTypes this foreignKey of cat ? I don't execute that on series.
编辑 1:
我找到了一个解决方案,但我不确定是否有更好的解决方案:/
I found a solution but I'm not sure if there had better : /
userPreferenceCategory.find({where: {name: "cat1"}}).then(function (cat) {
UserPreferenceCategoryType.create({
name : "type1",
userPreferenceCategoryId : cat.getDataValue("id")
});
});
推荐答案
看来只能这样了
不,因为当您使用包含进行创建时,它会创建关联实例,而不是关联它.
No, because when you do a create with include, it will create the associated instance, not associate it.
这篇关于sequelize :使用现有外键创建新条目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!