Хорошо. Ландшафт: Узел, MySql, Sequelize
Проблема: после создания новой модели данных и миграции (миграция узла. js, которая создает просто отлично), при запуске приложения Sequelize создает дублирующуюся таблицу (а также пересылает данные формы к новой таблице).
Пример: db.virtual_class является главной таблицей, и при запуске также создается db.virtual_classes.
Моя модель:
const Sequelize = require('sequelize');
const sequelize = require('../sequelize');
const model = sequelize.define('virtual_class', {
id: { type: Sequelize.INTEGER, autoIncrement: true, primaryKey: true },
style: Sequelize.STRING, // e.g. Style of class
description: Sequelize.STRING(1024), // e.g. class Details
jwt_secret: Sequelize.STRING, // e.g. rando string to be used to gen unique keys for every room
});
module.exports = model;
Я выделил, что Я думаю, что проблема в том, что я включаю модель в переменную моего контроллера индекса для своих функций.
const Virtual_class = require('./model');
const classQuery = require('./classQuery');
async function addClass({ style, description, secret }) {
const vClass = await Virtual_class.create({
style,
description,
jwt_secret: secret,
}, { raw: true });
return classQuery(vClass);
}
module.exports = {
addClass,
};
Функция Class Query для возврата данных в пригодный для использования объект:
function classQuery(queryResult) {
if (!queryResult) {
return null;
}
return {
id: queryResult.id,
style: queryResult.style,
description: queryResult.description,
secret: queryResult.jwt_secret,
};
}
module.exports = classQuery;
и миграция:
module.exports = {
up: (sequelize, Sequelize) => sequelize.getQueryInterface().createTable('virtual_class', {
id: {
type: Sequelize.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true,
},
style: {
type: Sequelize.STRING,
},
description: {
type: Sequelize.STRING,
},
jwt_secret: {
type: Sequelize.STRING,
},
createdAt: {
type: Sequelize.DATE,
allowNull: false,
defaultValue: Sequelize.fn('now'),
},
updatedAt: {
type: Sequelize.DATE,
allowNull: false,
defaultValue: Sequelize.fn('now'),
},
}),
down: sequelize => sequelize.getQueryInterface().dropTable('virtual_class'),
};
Net Результат хорош до запуска приложения - БД показывает новую таблицу, После запуска приложения - БД показывает таблицу дублирования.
Я относительный нуб, и я ломаю голову (и пытаюсь найти здесь решения) этой проблемы. Я делал это раньше с другими миграциями без проблем.
Любой совет приветствуется! Спасибо!