【问题标题】:Sequelize trying to SELECT a column which doesn't exist of a join tableSequelize 尝试选择连接表中不存在的列
【发布时间】:2022-01-14 08:05:32
【问题描述】:

我在查询连接表时遇到问题。例如,我使用 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:\1dsktp\bot\node_modules\sequelize\dist\lib\model.js:1119:21)
    at async run (E:\1dsktp\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 个表组成,其中一个是连接表:

  • 用户
  • 项目
  • UserItems(加入表和我遇到问题的表)

UserItems 有两个外键,分别是来自 UseruserId 和来自 ItemitemId。这些是添加的,将两个表与 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模型定义。

标签: node.js sqlite sequelize.js


【解决方案1】:

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

【讨论】:

  • 非常感谢!我一直在关注 YouTube 上的教程,他们在其中声明了那些 only 具有关联的外键。我解决了它设置两个属性(userId和itemId)作为主键,然后进行关联。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-30
  • 1970-01-01
  • 2016-01-24
  • 2015-12-05
  • 1970-01-01
  • 2014-03-11
  • 1970-01-01
相关资源
最近更新 更多