Я написал API в Express. js. Я использовал Sequelize. У меня есть метод create:
exports.story = async (req, res) => {
try {
const userId = await authController.userId(req);
const { type, firstTeam, secondTeam, date, place, leagueId } = req.body;
const newEvent = {
userId,
type,
firstTeam,
secondTeam,
date,
place,
leagueId,
};
const storeLeague = await models.Event.create(newEvent);
return res.status(200).json(storeLeague);
} catch (error) {
return res.status(500).json(error);
}
};
В этом методе я отправляю firstTeam
= 1 и secondTeam
= 5. Это id
из таблицы команд.
Далее у меня есть сотрудник модели событий:
...
Event.associate = models => {
Event.belongsTo(models.Team, { foreignKey: 'firstTeam', as: 'teamFirst' });
Event.belongsTo(models.Team, { foreignKey: 'secondTeam', as: 'teamSecond' });
};
...
и сотрудник модели команд:
...
Team.associate = models => {
Team.hasMany(models.Event, { foreignKey: 'eventId', as: 'event' });
};
...
В таблицах команд у меня есть:
+----+--------+----------------+------+------+----------+---------------------+---------------------+
| id | userId | name | logo | type | leagueId | createdAt | updatedAt |
+----+--------+----------------+------+------+----------+---------------------+---------------------+
| 1 | 1 | Arsenal Londyn | test | 1 | 1 | 2020-02-24 09:13:23 | 2020-02-24 09:13:23 |
| 2 | 1 | Chelsea Londyn | test | 1 | 1 | 2020-02-24 09:22:23 | 2020-02-24 09:22:23 |
+----+--------+----------------+------+------+----------+---------------------+---------------------+
Как я можно проверить, существует ли строка по teams.id
= 5? Почему Sequelize не возвращает мне ошибку? В таблице teams
у меня нет id
= 5.
Я использую MySQL база данных.
EDIT (26-02-2020 ):
Файл миграции команды:
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('Teams', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
userId: {
allowNull: false,
type: Sequelize.INTEGER,
},
name: {
allowNull: false,
type: Sequelize.STRING,
unique: true,
},
logo: {
type: Sequelize.STRING,
},
type: {
allowNull: false,
type: Sequelize.INTEGER,
},
leagueId: {
allowNull: false,
type: Sequelize.INTEGER,
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
},
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('Teams');
},
};
Файл миграции события:
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('Events', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
userId: {
type: Sequelize.INTEGER,
},
type: {
allowNull: false,
type: Sequelize.INTEGER,
},
leagueId: {
allowNull: false,
type: Sequelize.INTEGER,
},
firstTeam: {
allowNull: false,
type: Sequelize.INTEGER,
},
secondTeam: {
type: Sequelize.INTEGER,
},
date: {
allowNull: false,
type: Sequelize.DATE,
},
place: {
allowNull: false,
type: Sequelize.STRING,
},
deleted: {
type: Sequelize.BOOLEAN,
defaultValue: false,
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
},
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('Events');
},
};
Файл модели команды:
module.exports = (sequelize, DataTypes) => {
const Team = sequelize.define(
'Team',
{
userId: DataTypes.INTEGER,
name: DataTypes.STRING,
logo: DataTypes.STRING,
type: DataTypes.INTEGER,
leagueId: DataTypes.INTEGER,
},
{},
);
Team.associate = models => {
Team.hasMany(models.Event, { foreignKey: 'firstTeam', as: 'teamFirst' });
Team.hasMany(models.Event, { foreignKey: 'secondTeam', as: 'teamSecond' });
};
return Team;
};
Файл модели события:
module.exports = (sequelize, DataTypes) => {
const Event = sequelize.define(
'Event',
{
userId: DataTypes.INTEGER,
type: DataTypes.INTEGER,
leagueId: DataTypes.INTEGER,
firstTeam: DataTypes.INTEGER,
secondTeam: DataTypes.INTEGER,
date: DataTypes.DATE,
place: DataTypes.STRING,
deleted: DataTypes.BOOLEAN,
},
{},
);
Event.associate = models => {
Event.belongsTo(models.Team, { foreignKey: 'firstTeam', as: 'teamFirst' });
Event.belongsTo(models.Team, { foreignKey: 'secondTeam', as: 'teamSecond' });
};
return Event;
};