【发布时间】:2022-11-11 03:36:50
【问题描述】:
尝试向表中添加元素时,出现以下错误:"INSERT or UPDATE in table \"devices\" violates foreign key constraint \"devices_typeId_fkey\""。为什么会发生,如何纠正?
这是我在 sequelize 中给定表格的模型。
const Device = sequelize.define('device', {
id: {type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
name: {type: DataTypes.STRING, unique: true, allowNull: false},
price: {type: DataTypes.INTEGER, allowNull: false},
rating: {type: DataTypes.INTEGER, defaultValue: 0},
img: {type: DataTypes.STRING, allowNull: false},
})
在这里我发送一个在表中创建字段的请求,这就是错误出现的地方
const uuid = require('uuid')
const path = require('path');
const {Device, DeviceInfo} = require('../models/models')
const ApiError = require('../error/ApiError');
class DeviceController {
async create(req, res, next) {
try {
let {name, price, brandId, typeId, info} = req.body
const {img} = req.files
let fileName = uuid.v4() + ".jpg"
img.mv(path.resolve(__dirname, '..', 'static', fileName))
const device = await Device.create({name, price, brandId, typeId, img: fileName});
return res.json(device)
} catch (e) {
next(ApiError.badRequest(e.message))
}
}
这是 Postman 中的 POST 请求: enter image description here
【问题讨论】:
-
这基本上意味着您有一个外键 - 您尝试输入的值在(我猜)
types表中不存在
标签: javascript postgresql