sequelize
を私のnodejs
ウェブアプリケーションORMとして使用しています。
私にはOffer
とGame
の2モデルがあります。それらの間には1対1の関係があり、実装方法を検討しています。
最初に、Offer.belongsTo(Game)
を使用して試して、がOffer
モデルに存在するようにしました。 Offer
を作成するときには、Game
も作成します。続編の関連付けを含むモデルを作成
次のように私は関連を設定している:
Offer.belongsTo(models.Game, {
foreignKey: {
allowNull: false
}
})
GameId
がnullになることはありませんように。 sequelize
docsでは、私はこのようなOffer
と一緒Game
を作成することができることが注目される:
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アクション?
EDIT:
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;
};
直接関連していない、しかし:制約の定義は、モデル内に存在http://stackoverflow.com/questions/37892699/create-a-record-and-an-associated-record-in一歩 – alecxe
モデルの定義を投稿できますか? – Shaharyar
@Shaharyarモデルを追加しました。 – itaied