一段时间以来,我一直在使用React,node,sequelize,Redux进行此项目,并且一切运行良好。前几天,我决定每次尝试更新一些节点程序包时,但是在运行npm update --save/--save-dev
之后,Sequelize突然中断了。
突然,当我尝试运行该应用程序时,我最初对sql的获取失败,并且我的sequelize模型抛出错误:
/node_modules/sequelize/lib/associations/belongs-to-many.js:130
this.sourceKeyField = this.source.rawAttributes[this.sourceKey].field || this.sourceKey;
^
TypeError: Cannot read property 'field' of undefined
at new BelongsToMany (/Users/dlmusic/Desktop/Cullan - Site/Metadata-Tagging-With-Redux/node_modules/sequelize/lib/associations/belongs-to-many.js:130:69)
at Function.belongsToMany (/Users/dlmusic/Desktop/Cullan - Site/Metadata-Tagging-With-Redux/node_modules/sequelize/lib/associations/mixin.js:64:25)
at Object.<anonymous> (/Users/dlmusic/Desktop/Cullan - Site/Metadata-Tagging-With-Redux/authenticationBI.js:63:12)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:643:32)
at Function.Module._load (internal/modules/cjs/loader.js:556:12)
at Module.require (internal/modules/cjs/loader.js:683:19)
at require (internal/modules/cjs/helpers.js:16:16)
at Object.<anonymous> (/Users/dlmusic/Desktop/Cullan - Site/Metadata-Tagging-With-Redux/api/routes/backgroundInstrumentalsRoutes.js:6:36)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:643:32)
at Function.Module._load (internal/modules/cjs/loader.js:556:12)
at Module.require (internal/modules/cjs/loader.js:683:19)
at require (internal/modules/cjs/helpers.js:16:16)
at Object.<anonymous> (/Users/dlmusic/Desktop/Cullan - Site/Metadata-Tagging-With-Redux/server.js:4:39)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:643:32)
at Function.Module._load (internal/modules/cjs/loader.js:556:12)
at Function.Module.runMain (internal/modules/cjs/loader.js:839:10)
那很奇怪。我最近才在前端上工作。我什至没有在一个多月的时间内接触过任何序列化模型,关联或控制器,更不用说这些关联已经连续三个月没有错误地工作了,但是突然之间说这是无效的。
好的。精细。没什么大不了的。 Sequelize只是不喜欢这些模块之一,所以我将重置git head,将我的模块文件夹丢掉,然后找出不喜欢的模块。
我重置git head,删除我的modules文件夹,然后运行npm i
。
当我之前从未收到此错误时,同一错误仍然会出现。
这阻止了创建序列关联表,因此我的应用甚至无法启动。
我注释掉了导致错误的sequelize关联,现在sequelize运行良好,但是我需要那些关联才能使应用程序的某些功能正常工作。
我正准备将头发拔掉,这让我很沮丧。我什至不知道该怎么办。我尝试通过更改方法来弄乱我的关联,但实际上没有任何作用。
这里是显然有问题的续集关联。需要说明的是,每个类别可以有多种样式,但是每种样式只有一个类别。
CategoryBI.belongsToMany(StyleBI,
{ constraints: false,
timestamps: false,
foreignKey: "cat_id",
sourceKey: "style_id",
through: "cat_styles"
});
StyleBI.belongsTo(CategoryBI,
{ constraints: false,
timestamps: false,
foreignKey: "cat_id",
targetKey: "cat_id",
through: "cat_styles"
});
和模型:
module.exports = function(sequelize, DataTypes) {
return sequelize.define("categories", {
cat_id: {
type: DataTypes.INTEGER(11),
allowNull: false,
primaryKey: true,
autoIncrement: true
},
cat_name: {
type: DataTypes.STRING(50),
allowNull: true
}
}, {
tableName: "categories",
underscored: true,
timestamps: false
});
};
module.exports = function(sequelize, DataTypes) {
return sequelize.define("styles", {
style_id: {
type: DataTypes.INTEGER(11),
allowNull: false,
primaryKey: true,
autoIncrement: true
},
cat_id: {
type: DataTypes.INTEGER(8),
allowNull: false,
defaultValue: "0"
},
style_name: {
type: DataTypes.STRING(50),
allowNull: true
},
style_img: {
type: DataTypes.STRING(55),
allowNull: true
}
}, {
tableName: "styles",
underscored: true,
timestamps: false
});
};
答案 0 :(得分:0)
因此,我更改了关联语法,它再次开始工作。我对协会如何突然停止工作感到困惑,但这就是我将其更改为的方式。
CategoryBI.hasMany(StyleBI,
{ constraints: false,
timestamps: false,
foreignKey: "style_id",
sourceKey: "cat_id"
});
StyleBI.belongsTo(CategoryBI,
{ constraints: false,
timestamps: false,
foreignKey: "style_id",
targetKey: "cat_id"
});
我删除了穿透表并翻转了关联键。