我在查詢連接表時遇到問題。例如,我使用 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有兩個外鍵,分別userId來自User和itemId來自Item。添加這些將兩個表與 belongsToMany() 方法相關聯。
User.belongsToMany(Item, { through: UserItems, foreignKey: 'userId' });
Item.belongsToMany(User, { through: UserItems, foreignKey: 'itemId' });
這是 UserItems 表的圖片(我為此使用 SQLiteStudio)
這是UserItems模型
module.exports = (sequelize, DataTypes) => {
const model = sequelize.define('userItems', {
amount: {
type: DataTypes.INTEGER,
defaultValue: 0,
allowNull: false,
},
}, {
timestamps: false,
});
return model;
};
uj5u.com熱心網友回復:
顯然,您需要為UserItems(在表和模型中)添加主鍵列,因為 Sequelize 不支持復合主鍵和外鍵,并且默認情況下,id如果您未定義任何主鍵,則建議您將其作為主鍵顯式主鍵。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/415044.html
標籤:
