【问题标题】:how to add associations in sequelizejs?如何在 sequelizejs 中添加关联?
【发布时间】:2015-01-24 11:20:46
【问题描述】:

我正在用 express 和 sequelizejs 做我的项目。这是我第一次尝试 sequellize,我在两个表之间有一些关联,goodsgoodsImg。我正在研究这些关联,但我很难解决问题。请帮忙。

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:无法添加
外键约束 ....

【问题讨论】:

标签: mysql node.js express sequelize.js


【解决方案1】:

我可以建议你跑吗:

SHOW ENGINE INNODB STATUS\G

并检查该部分(这是一个示例):

------------------------
LATEST FOREIGN KEY ERROR
------------------------
... 
You have defined a SET NULL condition though some of the
columns are defined as NOT NULL.

【讨论】:

    猜你喜欢
    • 2017-07-19
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多