Sql 续集有很多失败
我试图与Sequelize建立一对多的关联: 以下是我的项目:Sql 续集有很多失败,sql,orm,sequelize.js,Sql,Orm,Sequelize.js,我试图与Sequelize建立一对多的关联: 以下是我的项目: 'use strict'; import { models } from '../sequelize/index'; var ProjectImages = require('./projectImages'); module.exports = (sequelize, DataTypes) => { const Projects = sequelize.define( 'Projects',
'use strict';
import { models } from '../sequelize/index';
var ProjectImages = require('./projectImages');
module.exports = (sequelize, DataTypes) => {
const Projects = sequelize.define(
'Projects',
{
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER,
},
title: {
type: DataTypes.STRING,
},
},
{}
);
Projects.associate = function(models) {
// associations can be defined here
Projects.belongsToMany(models.Tags, { through: models.TagsProjects });
Projects.hasMany(models.ProjectImages);
};
return Projects;
};
'use strict';
import { models } from '../sequelize/index';
module.exports = (sequelize, DataTypes) => {
const ProjectImages = sequelize.define(
'ProjectImages',
{
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER,
},
img: {
type: DataTypes.STRING,
},
createdAt: {
allowNull: false,
type: DataTypes.DATE,
defaultValue: DataTypes.literal('CURRENT_TIMESTAMP'),
},
updatedAt: {
allowNull: false,
type: DataTypes.DATE,
defaultValue: DataTypes.literal('CURRENT_TIMESTAMP'),
},
},
{}
);
return ProjectImages;
};
下面是这些项目的图片:
'use strict';
import { models } from '../sequelize/index';
var ProjectImages = require('./projectImages');
module.exports = (sequelize, DataTypes) => {
const Projects = sequelize.define(
'Projects',
{
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER,
},
title: {
type: DataTypes.STRING,
},
},
{}
);
Projects.associate = function(models) {
// associations can be defined here
Projects.belongsToMany(models.Tags, { through: models.TagsProjects });
Projects.hasMany(models.ProjectImages);
};
return Projects;
};
'use strict';
import { models } from '../sequelize/index';
module.exports = (sequelize, DataTypes) => {
const ProjectImages = sequelize.define(
'ProjectImages',
{
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER,
},
img: {
type: DataTypes.STRING,
},
createdAt: {
allowNull: false,
type: DataTypes.DATE,
defaultValue: DataTypes.literal('CURRENT_TIMESTAMP'),
},
updatedAt: {
allowNull: false,
type: DataTypes.DATE,
defaultValue: DataTypes.literal('CURRENT_TIMESTAMP'),
},
},
{}
);
return ProjectImages;
};
我正在将数据库与类似的内容同步。如果我不尝试在投影图像中创建任何行,我不会得到任何错误;但是,如果我尝试使用此创建行(id为1的项目存在):
我得到这个错误:
Executing (default): INSERT INTO `ProjectImages`
(`id`,`img`,`createdAt`,`updatedAt`,`ProjectId`)
VALUES
(1,'https://fakeimg.pl/500x500/',CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,1);
[1] Unhandled rejection SequelizeForeignKeyConstraintError:
Cannot add or update a child row: a foreign key constraint fails
(`9uhfggfhf2`.`projectimages`,
CONSTRAINT `projectimages_ibfk_1`
FOREIGN KEY (`ProjectId`)
REFERENCES `Projects` (`id`)
ON DELETE SET NULL
ON UPDATE CASCADE)
此外,如果我在同步时未将行添加到ProjectsImages中,我也不会收到任何错误,并且如果我尝试在DB中手动插入行,请执行以下操作:
INSERT INTO `ProjectImages` (`id`,`img`,`createdAt`,`updatedAt`,`ProjectsIdA`)
VALUES (1,'https://fakeimg.pl/500x500/',CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,1);
它毫无问题地工作
有人知道那里发生了什么吗?正如我所说的,为了与数据库同步,我使用了类似的东西 在片段的末尾,我必须为数据添加种子:
seed([
articles,
projectImages,
projects,
tags,
tagsProjects,
users,
usersLogins
]);
您会注意到,我在创建项目之前插入了项目图像
。把事情安排得井井有条解决了问题
seed([
articles,
projects,
projectImages,
tags,
tagsProjects,
users,
usersLogins
]);
:)