Связанные таблицы Sequelize
Я пытаюсь реализовать связанные таблицы postgresql один-ко-многим с помощью Sequelize. У меня есть две таблицы: categories и subcategories. Вот сами модели:
module.exports = (sequelize, Sequelize) => {
const Categories = sequelize.define("categories", {
name: {
type: Sequelize.STRING
},
}, {
timestamps: false
});
return Categories;
}
Вторая модель:
module.exports = (sequelize, Sequelize) => {
const Subcategories = sequelize.define("subcategories", {
name: {
type: Sequelize.STRING
},
categoryid: {
type: Sequelize.INTEGER,
}
}, {
timestamps: false
});
return Subcategories;
}
Далее я их связываю в файле index.js
db.categories = require("./categories.model.js")(sequelize, Sequelize);
db.subcategories = require("./subcategories.model.js")(sequelize, Sequelize);
db.categories.hasMany(db.categories);
db.subcategories.belongsTo(db.categories, {foreignKey: 'categoryId'});
В файле categories.controller.js я пытаюсь реализовать метод, который возвращал бы мне категории с подкатегориями:
exports.findAllWithSubcategories = (req, res) => {
Categories.findAll({
include:[{
model: Subcategories
}],
})
В файле routes я определяю путь так:
module.exports = app => {
const categories = require("../controllers/categories.controller");
var router = require("express").Router();
router.get("/subcategories", categories.findAllWithSubcategories);
app.use("/api/categories", router);
};
и далее я пытаюсь уже на стороне клиента вызвать этот метод:
const getAllCategoriesWithSub = () => {
fetch('https://fierce-jodhpurs-cow.cyclic.app/api/categories/subcategories', {
method: 'GET',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
})
.then((res) => res.json())
.then((res) => console.log(res))
.then((res) => res)
.catch((err) => console.error(err));
};
Но мне приходит ошибка, как будто бы я вызываю метод findOne с id - router.get("/:id", categories.findOne); (именно этот у меня возвращает такую ошибку):
"Error retrieving Categories with id=subcategories"