【问题标题】:Sequelize failing to create a table with the error "Executing (default): SELECT 1+1 AS result"Sequelize 无法创建表并出现错误“正在执行(默认):SELECT 1+1 AS 结果”
【发布时间】:2021-10-28 01:30:21
【问题描述】:

感谢您抽出时间提供帮助。运行我的服务器时,我收到一条消息“正在执行(默认):选择 1+1 作为结果”。我的表没有被创建。我该如何解决这个错误?我正在使用 MySQL、Sequelize、JavaScript、Express 和 Node 技术。

Connection.js(我检查了.env,信息准确)

const Sequelize = require('sequelize');
require('dotenv').config();

const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PW, {
      host: 'localhost',
      dialect: 'mysql',
      port: 3306
});

module.exports = sequelize;

Schema.sql

DROP DATABASE IF EXISTS events_db;

CREATE DATABASE events_db;

客户模型

const { DataTypes, Model } = require('sequelize');
const sequelize = require('../config/connection');

class Customer extends Model {}

Customer.init(
    {
        uuid: {
            type: DataTypes.UUID,
            defaultValue: DataTypes.UUIDV1,
            primaryKey: true,
            allowNull: false,
            unique: true,
        },
        name: {
            type: DataTypes.STRING,
            allowNull: false,
            validate: {
                notEmpty: true,
            }
        },
        phone: {
            type: DataTypes.STRING,
            allowNull: false,
            unique: true,
            validate: {
                notEmpty: true,
                is: /^[\+]?[(]?\d{3}[)]?[-\s\.]?\d{3}[-\s\.]?\d{4,6}$/im
            }
        },
        email: {
            type: DataTypes.STRING,
            allowNull: false,
            unique: true,
            validate: {
                isEmail: true
            }
        },
        address: {
            type: DataTypes.STRING,
            allowNull: false,
            unique: true,
            validate: {
                notEmpty: true
            }
        }
    },
    {
        sequelize,
        freezeTableName: true,
        underscored: true,
        modelName: 'customer'
    }
);

module.exports = Customer;

模型 index.js

const Customer = require('./Customer');
const Event = require('./Event');
const EventType = require('./EventType');
const Reservation = require('./Reservation');

Customer.hasMany(Reservation, {foreignKey: { allowNull: false }});
Event.hasMany(Reservation, {foreignKey: { allowNull: false }});
Event.hasOne(EventType, {foreignKey: { allowNull: false }});
Event.hasOne(Customer, {foreignKey: { allowNull: false }});

module.exports = { Customer, Event, EventType, Reservation };

Server.js

const express = require('express');
const sequelize = require('./config/connection');

const app = express();
const PORT = process.env.PORT || 3001;

const routes = require('./routes');

app.use(express.json());
app.use(express.urlencoded({
    extended: true
}));

app.use(routes);

sequelize.sync({ force: false }).then(() => {
    app.listen(PORT, () => {
        console.log(`App is listening on port ${PORT}`);
    });
});

【问题讨论】:

  • 你的问题是什么?

标签: javascript mysql node.js sequelize.js


【解决方案1】:

将模型导入 server.js 文件。不需要调用变量。这允许续集“看到”我的模型。在实现控制器或 GraphQL 时,可以删除此导入。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2020-12-16
  • 2011-09-29
  • 1970-01-01
  • 2020-02-23
  • 1970-01-01
  • 2021-11-30
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
相关资源
最近更新 更多