【发布时间】:2015-01-24 11:20:46
【问题描述】:
我正在用 express 和 sequelizejs 做我的项目。这是我第一次尝试 sequellize,我在两个表之间有一些关联,goods 和 goodsImg。我正在研究这些关联,但我很难解决问题。请帮忙。
Goods模特:
"use strict";
module.exports = function(sequelize, DataTypes) {
var Goods = sequelize.define('Goods', {
id: {
type: DataTypes.BIGINT,
primaryKey:true,
allowNull: false
},
goodsID:{
type:DataTypes.STRING,
allowNull: false
} ,
...
},{
classMethods: {
associate: function(models) {
Goods.hasMany(models.GoodsImg, { onDelete: 'SET NULL', onUpdate: 'CASCADE' });
}
}
});
return Goods;
};
goodsImg模特:
module.exports = function(sequelize, DataTypes) {
var GoodsImg = sequelize.define('GoodsImg', {
id: {
type: DataTypes.BIGINT,
primaryKey:true,
allowNull: false
},
goodsID:{
type:DataTypes.STRING,
allowNull: false,
references : 'goods',
referencesKey:'id'
} ,
....
},{
classMethods:{
associate: function(models){
GoodsImg.belongsTo(models.Goods,{ foreignKey: 'id', foreignKeyConstraint:true });
}
}
});
return GoodsImg;
};
使用sync()可以在数据库中生成goods表,goodImg不能。结果报错了:
正在执行(默认):SHOW INDEX FROM
Goods可能未处理
SequelizeDatabaseError:错误:ER_CANNOT_ADD_FOREIGN:无法添加
外键约束 ....
【问题讨论】:
-
stackoverflow.com/questions/22958683/… 我想这会对你有所帮助。
标签: mysql node.js express sequelize.js