Я использую NodeJS & Sequelize для школьного проекта, и я борюсь за создание ассоциаций с работой с секвелированием.Я пробовал пару вещей раньше, но ничего, что сделало мой день.
В основном, дело в том, что у пользователя может быть несколько плейлистов (hasMany).И плейлист принадлежит пользователю (ownTo).
Моя ошибка: Ассоциация с псевдонимом «плейлист» не существует для пользователей
Вот мои модели:
/* USER MODEL */
const Sequelize = require('sequelize');
const { db } = require('../utils/db');
const User = db.define('users', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
userID: {
type: Sequelize.INTEGER,
allowNull: false,
field: 'user_id',
},
firstName: {
type: Sequelize.STRING,
field: 'first_name',
allowNull: false,
},
}, {
underscored: true,
tableName: 'users',
freezeTableName: true, // Model tableName will be the same as the model name
});
module.exports = {
User,
};
/* PLAYLIST MODEL */
const sequelize = require('sequelize');
const { db } = require('../utils/db');
const Playlist = db.define('playlist', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: sequelize.INTEGER,
},
name: {
type: sequelize.STRING,
field: 'name',
allowNull: false,
},
coverUrl: {
type: sequelize.STRING,
field: 'cover_url',
allowNull: true,
},
ownerId: {
type: sequelize.INTEGER,
allowNull: false,
references: {
model: 'users',
key: 'user_id',
},
},
}, {
underscored: true,
tableName: 'playlist',
freezeTableName: true,
});
module.exports = {
Playlist,
};
Вот как я загружаю свои модели:
const { Credentials } = require('./credentials');
const { User } = require('./users');
const { Playlist } = require('./playlist');
function loadModels() {
User.associate = (models) => {
User.hasMany(models.Playlist, { as: 'playlist' });
};
Playlist.associate = (models) => {
Playlist.belongsTo(models.User, { foreignKey: 'owner_id', as: 'owner' });
};
Credentials.sync({ force: false });
User.sync({ force: false });
Playlist.sync({ force: false });
}
module.exports = {
loadModels,
};
И, наконец, вот мой запрос, где я получаю эту ошибку:
const express = require('express');
const { auth } = require('../../middlewares/auth');
const { Playlist } = require('../../models/playlist');
const { User } = require('../../models/users');
const router = express.Router();
router.get('/playlist', [], auth, (req, res) => {
User.findOne({
where: { userID: req.user.user_id }, include: 'playlist',
}).then((r) => {
console.log(r);
});
});
module.exports = router;
Iя пытаюсь получить весь плейлист, принадлежащий пользователю.
Я удалил весь бесполезный код (проверка jwt и т. д.). Поэтому, когда я делаю запрос на получение / плейлист, я получаю: Ошибка необработанного отклонения: Ассоциация с псевдонимом «плейлист» не существует для пользователей .
Я понимаю ошибку, но не понимаю, почему я ее получаю.Что я пропустил, есть идеи?
Спасибо,