gpt4 book ai didi

sql - Sequelize hasMany 失败

转载 作者:行者123 更新时间:2023-12-03 22:39:36 25 4
gpt4 key购买 nike

我正在尝试与 Sequelize 建立一对多关联:

这是我的项目:

'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;
};

我正在使用类似于 this snippet 的东西同步数据库。如果我不尝试在 ProjectImages 中创建任何行,则不会出现任何错误;但是如果我尝试用这个创建行(存在 id: 1 的项目):
"ProjectImages": [
{
"id": 1,
"img": "https://fakeimg.pl/500x500/",
"ProjectsId": 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 添加一行,我也不会收到任何错误,并且如果我尝试在数据库中手动插入该行:
INSERT INTO `ProjectImages` (`id`,`img`,`createdAt`,`updatedAt`,`ProjectsIdA`) 
VALUES (1,'https://fakeimg.pl/500x500/',CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,1);

它可以毫无问题地工作。

有谁知道那里发生了什么?

最佳答案

正如我所说,我使用类似于 this 的东西来与数据库同步。

在代码片段的末尾,我必须播种数据:

seed([
articles,
projectImages,
projects,
tags,
tagsProjects,
users,
usersLogins
]);

你会注意到,我在创建 projectImages 之前插入了 projects 。按正确的顺序放置东西解决了这个问题。
seed([
articles,
projects,
projectImages,
tags,
tagsProjects,
users,
usersLogins
]);

:)

关于sql - Sequelize hasMany 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51454206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com