Sequalize 不会创建表,但服务器运行没有错误

问题描述

这是我第一次使用 sequelize,我在 PostgreSQL 中创建表时遇到了问题。服务器正在运行,没有任何错误,但似乎 sequelize 没有做任何事情。我在下面发布了我的代码,希望您能帮助我解决这个问题。

这是我的 server.js 文件

const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");

const app = express();

var corsOptions = {
  origin: "http://localhost:8081"
};

app.use(cors(corsOptions));

// parse requests of content-type - application/json
app.use(bodyParser.json());

// parse requests of content-type - application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));

// database
const db = require("./app/models");
const Role = db.role;

// db.sequelize.sync();
// force: true will drop the table if it already exists
db.sequelize.sync({force: true}).then(() => {
  console.log('Drop and Resync Database with { force: true }');
  initial();
});

// simple route
app.get("/",(req,res) => {
  res.json({ message: "Welcome to bezkoder application." });
});

// routes
require('./app/routes/auth.routes')(app);
require('./app/routes/user.routes')(app);

// set port,listen for requests
const PORT = process.env.PORT || 8080;
app.listen(PORT,() => {
  console.log(`Server is running on port ${PORT}.`);
});

function initial() {
  Role.create({
    id: 1,naziv: "user"
  });
 
  Role.create({
    id: 2,naziv: "moderator"
  });
 
  Role.create({
    id: 3,naziv: "admin"
  });
}

我的 db.config

module.exports = {
  HOST: "localhost",USER: "postgres",PASSWORD: "sarke",DB: "elposlovanje",dialect: "postgres",port: 5432,pool: {
    max: 5,min: 0,acquire: 30000,idle: 10000
  }
};

我的 index.js 来自模型

const config = require("../config/db.config.js");

const Sequelize = require("sequelize");
const sequelize = new Sequelize(
  config.DB,config.USER,config.PASSWORD,{
    host: config.HOST,dialect: config.dialect,port: config.port,pool: {
      max: config.pool.max,min: config.pool.min,acquire: config.pool.acquire,idle: config.pool.idle
    }
  }
);

const db = {};

db.Sequelize = Sequelize;
db.sequelize = sequelize;

db.user = require("../models/user.model.js")(sequelize,Sequelize);
db.role = require("../models/role.model.js")(sequelize,Sequelize);

db.role.belongsToMany(db.user,{
  through: "user_roles",foreignKey: "roleId",otherKey: "userId"
});
db.user.belongsToMany(db.role,foreignKey: "userId",otherKey: "roleId"
});

db.ROLES = ["user","admin","moderator"];

module.exports = db;

来自模型的角色

module.exports = (sequelize,Sequelize) => {
  const Role = sequelize.define("roles",{
    id: {
      type: Sequelize.INTEGER,primaryKey: true
    },naziv: {
      type: Sequelize.STRING
    }
  });

  return Role;
};

和模型中的用户

module.exports = (sequelize,Sequelize) => {
  const User = sequelize.define("users",{
    ime: {
      type: Sequelize.STRING
    },prezime: {
      type: Sequelize.STRING
    },email: {
      type: Sequelize.STRING
    },lozinka: {
      type: Sequelize.STRING
    },brojindexa: {
      type: Sequelize.STRING
    }
  });

  return User;
};

运行 node server.js 后的输出是

Server is running on port 8080.

我的 package.json

{
  "name": "node-js-jwt-auth-postgresql","version": "1.0.0","description": "Node.js Demo for JWT Authentication with PostgreSQL","main": "server.js","scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },"keywords": [
    "node js","express","jwt","authentication","postgresql"
  ],"author": "bezkoder","license": "ISC","dependencies": {
    "bcryptjs": "^2.4.3","body-parser": "^1.19.0","cors": "^2.8.5","express": "^4.17.1","jsonwebtoken": "^8.5.1","pg": "^7.18.2","pg-hstore": "^2.3.3","sequelize": "^5.22.3"
  },"devDependencies": {
    "sequelize-cli": "^6.2.0"
  }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)