[英]Create model with its association in sequelize
我正在使用sequelize
作為我的nodejs
網絡應用程序ORM。
我有2個型號, Offer
和Game
。 它們之間存在1:1的關聯,我正在考慮如何實現它。
首先,我嘗試使用Offer.belongsTo(Game)
以便GameId
駐留在Offer
模型中。 當我創建一個Offer
,我希望也可以創建Game
。
我已將關聯設置如下:
Offer.belongsTo(models.Game, {
foreignKey: {
allowNull: false
}
})
所以GameId
永遠不會為空。 在sequelize
docs中 ,我注意到我可以像這樣一起創建Game
和Offer
:
models.Offer.create({Game:{"name":"The Last of Us", "platform":"PC"}},{include:[models.Game]});
但是我得到了:
Unhandled rejection SequelizeDatabaseError: null value in column "GameId" violates not-null constraint
我怎樣才能創建一個Offer
和Game
使用NOT NULL約束在1個行動?
編輯:
module.exports = function(sequelize, DataTypes) {
var Game = sequelize.define("Game", {
name: {
type: DataTypes.STRING,
allowNull: false
},
platform: {
type: DataTypes.ENUM('PC', 'PS4', 'PS3', 'XB1', 'XB360'),
allowNull: false
},
cover: {
type: DataTypes.STRING,
allowNull: false,
validate: {
notEmpty: true
}
}
}, {
updatedAt: false,
createdAt: false
});
return Game;
};
module.exports = function(sequelize, DataTypes) {
var Offer = sequelize.define("Offer", {
price: {
type: DataTypes.INTEGER,
validate: {
max: 999,
min: 0
}
},
exchange: {
type: DataTypes.BOOLEAN,
defaultValue: true,
allowNull: false
}
}, {
updatedAt: false,
classMethods: {
associate: function(models) {
Offer.belongsTo(models.Game, {
foreignKey: {
allowNull: false
}
});
}
}
});
return Offer;
};
您沒有為Offer
對象添加任何內容。 你只是傳遞Game
對象。
models.Offer.create({
//set fields for 'Offer'
Game:{"name":"The Last of Us", "platform":"PC"}
},
{include:[models.Game]}
);
此外,您只需在設置關聯時定義foreignKey
。 約束定義存在於模型中:
Offer.belongsTo(models.Game, {
foreignKey: 'GameId'
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.