【问题标题】:Sequelize ORM connection clean exitsSequelize ORM 连接清除退出
【发布时间】:2020-03-08 15:31:05
【问题描述】:

我是 Sequelize 的新手,我正在尝试用它来创建一个基本的 crud api。我正在使用 npm 包的 ^5.21.2 版本。

当我使用 node 或 nodemon 尝试在本地运行我的服务器时,nodemon 给了我:

[nodemon] starting `node server.js`
[nodemon] clean exit - waiting for changes before restart
[nodemon] restarting due to changes..."

我不知道为什么这种情况一直发生,但只有当我有 'db.sequelize.sync...' 包装函数时才会发生这种情况。我无法弄清楚需要更改哪些内容才能实现持续的数据库连接。

db.sequelize.sync(syncOptions).then(function() {
  app.listen(PORT, console.log("==> ????  Listening on port %s.", PORT));
});

我的开发配置是这样设置的:

 "development": {
        "username": "root",
        "password": "*Password*",
        "database": "planit",
        "host": "127.0.0.1",
        "dialect": "mysql",
        "operatorsAliases": "false"
      }

这是我的模型索引

"use strict";

var fs = require("fs");
var path = require("path");
var Sequelize = require("sequelize");
var basename = path.basename(module.filename);
var env = process.env.NODE_ENV || "development";
var config = require(__dirname + "/../config/config.json")[env];
var db = {};

if (config.use_env_variable) {
  var sequelize = new Sequelize(process.env[config.use_env_variable]);
} else {
  var sequelize = new Sequelize(config.database,config.username,config.password,config);
}

fs.readdirSync(__dirname)
  .filter(function(file) {
    return (
      file.indexOf(".") !== 0 && file !== basename && file.slice(-3) === ".js"
    );
  })
  .forEach(function(file) {
    var model = sequelize["import"](path.join(__dirname, file));
    db[model.name] = model;
  });

Object.keys(db).forEach(function(modelName) {
  if (db[modelName].associate) {
    db[modelName].associate(db);
  }
});

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

module.exports = db;

【问题讨论】:

    标签: mysql node.js express orm sequelize.js


    【解决方案1】:

    这段代码有问题:

    db.sequelize.sync(syncOptions).then(function() {
      app.listen(PORT, console.log("==> ?  Listening on port %s.", PORT));
    });
    

    删除app.listen(PORT, console.log("==> ? Listening on port %s.", PORT));

    app.listen(PORT, console.log("==> ?  Listening on port %s.", PORT));
    db.sequelize.sync(syncOptions).then(function() {});
    

    【讨论】:

    • 原来我遇到的问题更多的是与沟通不畅有关。我的数据库名称错误,所以 Sequelize 无法连接到它。
    猜你喜欢
    • 2016-07-15
    • 2022-01-18
    • 2021-06-24
    • 2021-04-11
    • 2015-06-16
    • 1970-01-01
    • 2013-09-14
    • 2011-10-05
    • 1970-01-01
    相关资源
    最近更新 更多