#javascript #mysql #node.js #orm #sequelize.js
#javascript #mysql #node.js #orm #sequelize.js
Вопрос:
Я использую node.js с помощью express и sequelize, а моя база данных — mysql. Я попытался создать модель класса, как написано в документации: https://sequelize.org/master/manual/model-basics.html . Я смог подключиться к базе данных, но не смог понять, как синхронизировать модель с базой данных для создания таблиц. вот моя пользовательская модель:
const { DataTypes, Model } = require('sequelize');
const connection = require("../server");
export class User extends Model { }
User.init({
id: {
type: DataTypes.BIGINT,
autoIncrement: true,
primaryKey: true,
unique: true,
allowNull: false
},
username: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
},
password: {
type: DataTypes.STRING,
allowNull: false,
},
userType: {
type: DataTypes.STRING,
allowNull: false,
}
}, {
connection
});
и вот мой server.js:
const express = require("express");
const Sequelize = require("sequelize");
const app = express();
const port = 8080;
const connection = new Sequelize("coupons2", "root", "1234", {
host: "localhost",
dialect: "mysql"
})
connection.sync()
.then(() => {
console.log("Connection to DB was successful");
})
.catch(err => {
console.error("Unable to connect to DB", err);
});
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
})
module.exports = connection;
Спасибо!
Ответ №1:
Я думаю, вы забыли потребовать Sequelize
, как показано в документе, который вы упомянули выше
`const {Sequelize, DataTypes, Model } = require('sequelize');
и если вы хотите, чтобы эта таблица создавалась автоматически по моделям, которые вы можете использовать sequelize.sync
в своем проекте
await sequelize.sync({ force: true });
console.log("All models were synchronized successfully.");
Комментарии:
1. спасибо за ваш ответ, но я попытался добавить 2 раздела кода, и это не сработало
2. проверьте это github.com/Arya4514/Node_Shop каталог моделей репозиториев, возможно, это могло бы чем-то помочь.
Ответ №2:
User.sync()
— создает таблицу, если она не существует (и ничего не делает, если она уже существует)User.sync({ force: true })
— создает таблицу, сначала удаляя ее, если она уже существовалаUser.sync({ alter: true })
— проверяет текущее состояние таблицы в базе данных (какие столбцы в ней есть, каковы их типы данных и т. Д.), А Затем выполняет необходимые изменения в таблице, чтобы она соответствовала модели.
(async () => {
await sequelize.sync({ alter: true });
})();
Ответ №3:
Мне удалось создать таблицы, импортировав модели в мой server.js : const models = require("./src/models/index");
, и с помощью метода sync().
Комментарии:
1. @Arya ответил рано. Итак, это должен быть принятый ответ.