我使用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,值得注意的是,我可以用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
使用非空約束的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;
};
沒有直接關係,但是,更像只是FYI:http://stackoverflow.com/questions/37892699/create-a-record-and-an-associated-record-in - 酮去。 – alecxe
你可以發佈模型的定義嗎? – Shaharyar
@Shaharyar添加了模型。 – itaied