【发布时间】:2016-11-02 23:19:24
【问题描述】:
我正在使用 sequelize 作为我的 nodejs 网络应用 ORM。
我有 2 个模型,Offer 和 Game。它们之间存在1:1的关联,我正在考虑如何实现。
首先,我尝试使用Offer.belongsTo(Game),以便GameId 驻留在Offer 模型中。当我创建 Offer 时,我希望也创建 Game。
我已将关联设置如下:
Offer.belongsTo(models.Game, {
foreignKey: {
allowNull: false
}
})
这样GameId 将永远不会为空。在sequelizedocs 中,注意到我可以像这样创建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
如何使用非空约束在 1 个操作中创建 Offer 和 Game?
编辑:
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;
};
【问题讨论】:
-
没有直接关系,但更像是仅供参考:stackoverflow.com/questions/37892699/…。
-
能贴出模型的定义吗?
-
@Shaharyar 添加了模型。
标签: node.js sequelize.js