【问题标题】:node js Express mysql connectionnode js快速连接mysql
【发布时间】:2014-05-13 07:23:28
【问题描述】:

这是我第一次在 node (Express) js 中编写,我正在尝试连接我的数据库 (Mysql)。在这里我找到了我的 app.js 文件的代码。

app.js

var express = require('express'),
mysql = require('mysql');

// Application initialization

var bodyParser = require('body-parser');

var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : ''
});
var app = module.exports = express.createServer();

// Database setup

connection.query('CREATE DATABASE IF NOT EXISTS test', function (err) {
if (err) throw err;
connection.query('USE test', function (err) {
if (err) throw err;
connection.query('CREATE TABLE IF NOT EXISTS users('
+ 'id INT NOT NULL AUTO_INCREMENT,'
+ 'PRIMARY KEY(id),'
+ 'name VARCHAR(30)'
+ ')', function (err) {
if (err) throw err;
});
});
});

// Configuration

app.use(express.bodyParser());

// Main route sends our HTML file

app.get('/', function(req, res) {
res.sendfile(__dirname + '/index.html');
});

// Update MySQL database

app.post('/users', function (req, res) {
connection.query('INSERT INTO users SET ?', req.body,
function (err, result) {
if (err) throw err;
res.send('User added to database with ID: ' + result.insertId);
}
);
});

// Begin listening

app.listen(3000);
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);

但是当我在 CMD 中运行这个 app.js 文件时>node app.js

我收到此错误。

c:\express\testproject>node app.js

c:\express\testproject\app.js:13
var app = module.exports = express.createServer();
                                   ^
TypeError: Object function createApplication() {
  var app = function(req, res, next) {
    app.handle(req, res, next);
  };

  mixin(app, proto);
  mixin(app, EventEmitter.prototype);

  app.request = { __proto__: req, app: app };
  app.response = { __proto__: res, app: app };
  app.init();
  return app;
} has no method 'createServer'
    at Object.<anonymous> (c:\express\testproject\app
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:1
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

我无法弄清楚到底是什么问题。

【问题讨论】:

    标签: javascript mysql node.js express


    【解决方案1】:

    您的代码是为 Express 3 编写的,您似乎正在使用 Express 4。

    createServer 已被删除。

    只需使用express() 即可创建一个新应用。

    参考:Migrating from Express 3 to Express 4

    【讨论】:

      【解决方案2】:
      has no method 'createServer'. 
      

      这解释了你的原因。所以你的代码行

      var app = module.exports = express.createServer();
      

      不是一个有效的调用。因此,如上所述,您的工作目录中有 Express 4,并且您调用了属于 Express 3 的方法。

      var app = express();
      

      【讨论】:

        【解决方案3】:

        先安装mysql模块

        npm install mysql –save
        

        然后创建一个文件 db.js 或你喜欢的名称。

        import mysql from 'mysql';
        var connection = mysql.createConnection({
            host: 'DB_host',
            user: 'DB_user',
            password: 'DB_password',
            database:'DB_name'
        });
        
        connection.connect(function(err) {
            if (err) {
                console.error('error connecting: ' + err.stack);
                return;
            }
            console.log('data base connected as id ' + connection.threadId);
        });
        
        connection.on('error', function(err) {
            console.log('db error normal;', err);
            if(err.code === 'PROTOCOL_CONNECTION_LOST') {
                console.log('connect lost');                        
            } 
            else {                                     
                throw err;                                 
            }
        });
        
        //keep active your database connection
        
        setInterval(function () {
            console.log('timeout completed'); 
            var sql="select id from table_name limit 1";
            connection.query(sql, function(err, result, field){
                console.log('running query for non idle ');
            });
        }, 600000); 
        
        module.exports = {connection, mysql};
        

        【讨论】:

          【解决方案4】:

          你可以使用sequlize

          const sequelize = new Sequelize(env.database, env.username, env.password, {
          host: env.host,
          
           dialect: env.dialect,
           operatorsAliases: 1,
          
          pool: {
            max: env.max,
            min: env.pool.min,
            acquire: env.pool.acquire,
            idle: env.pool.idle
          }
          });
          

          【讨论】:

            猜你喜欢
            • 2018-09-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-09-20
            • 2017-07-29
            • 1970-01-01
            • 2016-11-12
            • 2011-10-07
            相关资源
            最近更新 更多