Sequelize 尝试 SELECT 一个不存在的列的连接 table

Sequelize trying to SELECT a column which doesn't exist of a join table

我在查询连接时遇到问题 table。例如,我使用 findAll() 模型方法。它给了我这个错误

代码:

const { UserItems, sequelize } = require('./dbObjects');
const { Op } = require('sequelize');

async function run() {
    const userItem = await UserItems.findAll();
    console.log(user);
}

run();

错误:

    at async Function.findAll (E:dsktp\bot\node_modules\sequelize\dist\lib\model.js:1119:21)
    at async run (E:dsktp\bot\dbTesting.js:14:15) {
  name: 'SequelizeDatabaseError',
  parent: [Error: SQLITE_ERROR: no such column: id] {
    errno: 1,
    code: 'SQLITE_ERROR',
    sql: 'SELECT `id`, `amount` FROM `userItems` AS `userItems`;'
  },
  original: [Error: SQLITE_ERROR: no such column: id] {
    errno: 1,
    code: 'SQLITE_ERROR',
    sql: 'SELECT `id`, `amount` FROM `userItems` AS `userItems`;'
  },
  sql: 'SELECT `id`, `amount` FROM `userItems` AS `userItems`;',
  parameters: {}
}

出于某种原因,它正在尝试查找名为 'id' 的列,该列当然不存在。

我的数据库非常简单,它由 3 个 table 组成,其中一个是连接 table:

UserItems有两个外键,分别是UseruserId和[=35的itemId =]项目。添加这些是将 table 与 belongsToMany() 方法相关联。

User.belongsToMany(Item, { through: UserItems, foreignKey: 'userId' });
Item.belongsToMany(User, { through: UserItems, foreignKey: 'itemId' });

Here is a picture of what the UserItems table looks like (I'm using SQLiteStudio for this)

这是 UserItems 模型

module.exports = (sequelize, DataTypes) => {
    const model = sequelize.define('userItems', {
        amount: {
            type: DataTypes.INTEGER,
            defaultValue: 0,
            allowNull: false,
        },
    }, {
        timestamps: false,
    });
    return model;
};

显然,您需要为 UserItems 添加主键列(在 table 和模型中),因为 Sequelize 不支持复合主键和外键,默认情况下,它如果您没有明确定义任何主键,建议您将 id 作为主键。