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(加入 table 和我遇到的问题)
UserItems有两个外键,分别是User的userId
和[=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
作为主键。
我在查询连接时遇到问题 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(加入 table 和我遇到的问题)
UserItems有两个外键,分别是User的userId
和[=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
作为主键。