Ich verwende sequelize
als meine nodejs
Web App ORM.
Ich habe 2 Modelle, Offer
und Game
. Es gibt eine 1: 1-Verbindung zwischen ihnen, und ich überlege, wie ich es umsetzen soll.
Zuerst habe ich versucht mit Offer.belongsTo(Game)
, so dass die GameId
im Offer
Modell ist. Wenn ich eine Offer
erstelle, möchte ich, dass die Game
auch erstellt werden.Erstellen Sie ein Modell mit seiner Zuordnung in Sequelize
ich den Verband festgelegt haben, wie folgt:
Offer.belongsTo(models.Game, {
foreignKey: {
allowNull: false
}
})
Damit die GameId
niemals null sein. In sequelize
docs wird darauf hingewiesen, dass ich die Game
zusammen mit dem Offer
wie dies schaffen könnte:
models.Offer.create({Game:{"name":"The Last of Us", "platform":"PC"}},{include:[models.Game]});
Aber ich bin immer:
Unhandled rejection SequelizeDatabaseError: null value in column "GameId" violates not-null constraint
Wie kann ich ein Offer
und ein Game
schaffen, in 1 Aktion mit der Nicht-Null-Einschränkung?
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;
};
nicht direkt, sondern eher wie nur FYI: http://stackoverflow.com/questions/37892699/create-a-record-and-an-associated-record-in -ein Versuch. – alecxe
Können Sie die Definition von Modellen veröffentlichen? – Shaharyar
@Shaharyar Hinzugefügt die Modelle. – itaied