无法向含外键关联字段插入ID:Prisma创建Banknote报错求助
解决Prisma创建Banknote时关联Country ID的错误
问题分析
错误提示Unknown argument 'countryId'. Did you mean 'country'?,是因为Prisma处理关联关系时,要求通过关联对象语法绑定已有记录,而非直接传入外键字段值。你的Banknote模型定义了country关联关系,因此create操作需用connect语法来关联已存在的Country ID。
解决方案
修改prisma.banknote.create()中的data配置,把直接传外键ID的方式替换为关联对象的connect语法,同时移除模型中不存在的字段:
router.post('/', (req, res) => { const { modelNominalValue: nominalValue, modelFaceValue: faceValue, modelCommonName: commonName, modelObverse: obverse, modelReverse: reverse, modelComposition: composition, modelYearStart: yearStart, modelYearEnd: yearEnd, modelDimensionsMilimeters: dimensionsMilimeters, modelComments: comments, selectedCountryId: countryId, selectedCurrencyId: currencyId, periodId, } = req.body; prisma.banknote.create({ data: { nominalValue, faceValue, commonName, obverse, reverse, composition, yearStart, yearEnd, dimensionsMilimeters, comments, // 用connect关联已存在的Country country: countryId ? { connect: { id: countryId } } : undefined, // 同理关联Currency currency: currencyId ? { connect: { id: currencyId } } : undefined, // 关联Period period: periodId ? { connect: { id: periodId } } : undefined, createdAt: new Date(), updatedAt: new Date(), }, }) .then((banknote) => { res.status(201).json(banknote); }) .catch((err) => { res.status(500).send(err.message); }); });
关键说明
connect用于关联数据库中已存在的记录,通过指定关联模型的唯一标识(此处为id)建立关系。- 增加条件判断(
countryId ? ... : undefined),适配模型中外键字段的可选性(Int?),避免空值引发错误。 - 移除了
rulerId和shapeId,因为你的Banknote模型未定义这两个字段,保留会导致额外参数错误。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

