0

this is very first time i am writing in node (Express) js, i am trying to connect my database (Mysql).Here what i found the code for my app.js file.

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);

but when i am running this app.js file in CMD >node app.js

i get this error.

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

I am unable to figure out what exactly the issue is.

0

4 Answers 4

3

You seem to be using Express 4 while your code is written for Express 3.

createServer has been removed.

Just use express() to create a new app.

Reference : Migrating from Express 3 to Express 4

Sign up to request clarification or add additional context in comments.

Comments

0
has no method 'createServer'. 

This explains you the reason. So your line of code

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

is not a valid call. So as explained above you have Express 4 on your working directory and you have called the method that belongs to Express 3.

var app = express();

Comments

0

first install mysql module

npm install mysql –save

then create a file db.js or the name u prefer.

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};

Comments

0

you can use 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
}
});

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.