SQL如何返回数据表中不存在的列数据?
解决Sequelize生成SQL返回不存在列的问题
问题分析
你生成的INSERT语句中,RETURNING子句包含了数据表Patrons不存在的UserId列,这会直接触发数据库报错。问题根源在Sequelize的模型配置或数据创建的代码逻辑中。
解决方案
1. 检查并修正模型定义
确认Patrons模型是否误定义了UserId字段,或是在关联配置(如belongsTo/hasOne)时自动生成了该多余外键。如果是关联导致的,明确指定正确的外键列(你的表中为donaturId):
// 示例:修正关联配置 Patrons.belongsTo(Donatur, { foreignKey: 'donaturId', // 指定表中存在的外键列名 as: 'donatur' // 可选:设置别名,避免自动生成错误字段 });
2. 手动控制CREATE方法的返回字段
调用create方法时,通过attributes参数明确指定需要返回的列,排除不存在的UserId:
// 正确的create调用示例 const newPatron = await Patrons.create({ name: '示例名称', jumlah: 100, donaturId: 1, category: '示例分类' }, { attributes: ['id', 'name', 'jumlah', 'donaturId', 'category', 'createdAt', 'updatedAt'] });
3. 调整模型的默认返回范围
如果模型设置了defaultScope,检查其中是否包含UserId,将其移除:
const Patrons = sequelize.define('Patrons', { // 字段定义... }, { defaultScope: { attributes: ['id', 'name', 'jumlah', 'donaturId', 'category', 'createdAt', 'updatedAt'] } });
内容的提问来源于stack exchange,提问作者aprizallahmad
相关产品推荐
相关产品推荐

