Mysql TypeError:无法读取属性';查询';未定义的?

Mysql TypeError:无法读取属性';查询';未定义的?,mysql,node.js,docker,boot2docker,docker-machine,Mysql,Node.js,Docker,Boot2docker,Docker Machine,我正在尝试使用Docker部署我的节点应用程序。以下是我的节点应用程序: var express = require('express'); var path = require('path'); var mysql = require('mysql'); var app = express(); var bodyparser = require('body-parser'); var mongoose =require('mongoose'); app.use(express.static("

我正在尝试使用Docker部署我的节点应用程序。以下是我的节点应用程序:

var express = require('express');
var path = require('path');
var mysql = require('mysql');
var app = express();
var bodyparser = require('body-parser');
var mongoose =require('mongoose');
app.use(express.static("./app"));

var pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'root',
database: 'node_db'
});

app.set('port',8080);
app.set('views',path.join(__dirname,'views'));
app.set('view engine','jade');
app.use(express.static(path.join(__dirname,'public')));
app.use(bodyparser.urlencoded({ extended: false }));

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

app.get('/getAllBlogs', function (req, res) {
   pool.getConnection(function (err, connection) {
       var sql = mysql.format("select * from blogs");

           connection.query(sql, function (error, results, fields) {
           connection.release();
              if (error) {
                res.send(error);
              }
             res.send(results);
            });
        });
     });

 app.get('/getBlog/:id', function(req,res){ 
 console.log(req.params.id);
 pool.getConnection(function (err, connection) {
    var sql = mysql.format("select * from blogs where id=?", [req.params.id]);
    connection.query(sql, function (error, results, fields) {
        connection.release();
        if (error) {
            res.status(200).send(error);
        }
        res.send(results[0])
    });
  });
});

app.listen(app.get('port'));
console.log('~~Server Runnign on port localhost:'+app.get('port')+'~~');
这是我的Docker文件:

FROM node:boron

# Create app directory
RUN mkdir -p /home/sameera/Desktop/test/app
WORKDIR /home/sameera/Desktop/test/app

# Install app dependencies


COPY package.json /home/sameera/Desktop/test/app
RUN npm install

# Bundle app source
COPY . /home/sameera/Desktop/test/app

EXPOSE 8080
CMD [ "npm", "start" ]
var express = require('express');
var path = require('path');
var mysql = require('mysql');
var app = express();
var bodyparser = require('body-parser');
var mongoose = require('mongoose');
app.use(express.static("./app"));

var pool = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'node_db'
});
pool.connect();
app.set('port', 8080);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyparser.urlencoded({ extended: false }));

app.get('/test', function (req, res) {
        var sql = mysql.format("SELECT * FROM users");
        pool.query(sql, function (error, results, fields) {
            if (error) {
                res.send(error);
            }
            res.send(results);
             pool.end();
        });
});

app.listen(app.get('port'));
console.log('Server Runnign on port localhost:' + app.get('port'));
[
    {
        "id": 1,
        "firstName": "shubham",
        "lastName": "verma",
        "userName": "shubham",
        "email": "shubham@email.com",
        "password": "25d55ad283aa400af464c76d713c07ad",
        "sessionId": "bdfb43ae-ee9e-4819-b35a-3cb254885023",
        "isLive": 1,
        "date": "2017-05-06T06:05:24.000Z"
    }
]
[
    {
        "id": 1,
        "firstName": "shubham",
        "lastName": "verma",
        "userName": "shubham",
        "email": "shubham@email.com",
        "password": "25d55ad283aa400af464c76d713c07ad",
        "sessionId": "bdfb43ae-ee9e-4819-b35a-3cb254885023",
        "isLive": 1,
        "date": "2017-05-06T06:05:24.000Z"
    }
]
docker文件构建成功,当我在下面运行命令时,它运行正常

docker run -p 49160:8080 img
但是当我尝试加载一个使用mysql的数据页面时,它是 给出一个错误:

    connection.query(sql, function (error, results, fields) {
              ^
    TypeError: Cannot read property 'query' of undefined
}

我想问题在于我无法用这个容器连接到mysql,因为我没有在docker文件中安装或使用任何与mysql相关的命令。当我删除所有sql连接和相关代码时,它不会给出任何错误并正常运行。我使用的是Ubuntu14.04

您正在使用池连接到mysql并使用连接

使用池进行查询:

var mysql = require('mysql'); 

var pool = mysql.createPool({ connectionLimit : 10, host : 'example.org', user : 'bob', password : 'secret', database : 'my_db' }); 

pool.query('SELECT 1 + 1 AS solution', function (error, results, fields) { if (error) throw error; console.log('The solution is: ', results[0].solution); });

您正在使用池连接到MySQL,并使用连接进行查询

使用池进行查询:

var mysql = require('mysql'); 

var pool = mysql.createPool({ connectionLimit : 10, host : 'example.org', user : 'bob', password : 'secret', database : 'my_db' }); 

pool.query('SELECT 1 + 1 AS solution', function (error, results, fields) { if (error) throw error; console.log('The solution is: ', results[0].solution); });

如果不需要池,您可以使用以下代码:

FROM node:boron

# Create app directory
RUN mkdir -p /home/sameera/Desktop/test/app
WORKDIR /home/sameera/Desktop/test/app

# Install app dependencies


COPY package.json /home/sameera/Desktop/test/app
RUN npm install

# Bundle app source
COPY . /home/sameera/Desktop/test/app

EXPOSE 8080
CMD [ "npm", "start" ]
var express = require('express');
var path = require('path');
var mysql = require('mysql');
var app = express();
var bodyparser = require('body-parser');
var mongoose = require('mongoose');
app.use(express.static("./app"));

var pool = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'node_db'
});
pool.connect();
app.set('port', 8080);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyparser.urlencoded({ extended: false }));

app.get('/test', function (req, res) {
        var sql = mysql.format("SELECT * FROM users");
        pool.query(sql, function (error, results, fields) {
            if (error) {
                res.send(error);
            }
            res.send(results);
             pool.end();
        });
});

app.listen(app.get('port'));
console.log('Server Runnign on port localhost:' + app.get('port'));
[
    {
        "id": 1,
        "firstName": "shubham",
        "lastName": "verma",
        "userName": "shubham",
        "email": "shubham@email.com",
        "password": "25d55ad283aa400af464c76d713c07ad",
        "sessionId": "bdfb43ae-ee9e-4819-b35a-3cb254885023",
        "isLive": 1,
        "date": "2017-05-06T06:05:24.000Z"
    }
]
[
    {
        "id": 1,
        "firstName": "shubham",
        "lastName": "verma",
        "userName": "shubham",
        "email": "shubham@email.com",
        "password": "25d55ad283aa400af464c76d713c07ad",
        "sessionId": "bdfb43ae-ee9e-4819-b35a-3cb254885023",
        "isLive": 1,
        "date": "2017-05-06T06:05:24.000Z"
    }
]
结果如下:

FROM node:boron

# Create app directory
RUN mkdir -p /home/sameera/Desktop/test/app
WORKDIR /home/sameera/Desktop/test/app

# Install app dependencies


COPY package.json /home/sameera/Desktop/test/app
RUN npm install

# Bundle app source
COPY . /home/sameera/Desktop/test/app

EXPOSE 8080
CMD [ "npm", "start" ]
var express = require('express');
var path = require('path');
var mysql = require('mysql');
var app = express();
var bodyparser = require('body-parser');
var mongoose = require('mongoose');
app.use(express.static("./app"));

var pool = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'node_db'
});
pool.connect();
app.set('port', 8080);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyparser.urlencoded({ extended: false }));

app.get('/test', function (req, res) {
        var sql = mysql.format("SELECT * FROM users");
        pool.query(sql, function (error, results, fields) {
            if (error) {
                res.send(error);
            }
            res.send(results);
             pool.end();
        });
});

app.listen(app.get('port'));
console.log('Server Runnign on port localhost:' + app.get('port'));
[
    {
        "id": 1,
        "firstName": "shubham",
        "lastName": "verma",
        "userName": "shubham",
        "email": "shubham@email.com",
        "password": "25d55ad283aa400af464c76d713c07ad",
        "sessionId": "bdfb43ae-ee9e-4819-b35a-3cb254885023",
        "isLive": 1,
        "date": "2017-05-06T06:05:24.000Z"
    }
]
[
    {
        "id": 1,
        "firstName": "shubham",
        "lastName": "verma",
        "userName": "shubham",
        "email": "shubham@email.com",
        "password": "25d55ad283aa400af464c76d713c07ad",
        "sessionId": "bdfb43ae-ee9e-4819-b35a-3cb254885023",
        "isLive": 1,
        "date": "2017-05-06T06:05:24.000Z"
    }
]
但如果需要池,并且您想使用池,那么您应该尝试以下代码:

var express = require('express');
var path = require('path');
var mysql = require('mysql');
var app = express();
var bodyparser = require('body-parser');
var mongoose = require('mongoose');
app.use(express.static("./app"));

var pool = mysql.createPool({
    connectionLimit: 10,
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'node_db'
});

app.set('port', 8080);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyparser.urlencoded({ extended: false }));

app.get('/test', function (req, res) {
    pool.getConnection(function (err, connection) {
        var sql = mysql.format("SELECT * FROM users");
        connection.query(sql, function (error, results, fields) {
            if (error) {
                res.send(error);
            }
            res.send(results);
            connection.release();
        });
    });
});

app.listen(app.get('port'));
console.log('Server Runnign on port localhost:' + app.get('port'));
结果将是这样的:

FROM node:boron

# Create app directory
RUN mkdir -p /home/sameera/Desktop/test/app
WORKDIR /home/sameera/Desktop/test/app

# Install app dependencies


COPY package.json /home/sameera/Desktop/test/app
RUN npm install

# Bundle app source
COPY . /home/sameera/Desktop/test/app

EXPOSE 8080
CMD [ "npm", "start" ]
var express = require('express');
var path = require('path');
var mysql = require('mysql');
var app = express();
var bodyparser = require('body-parser');
var mongoose = require('mongoose');
app.use(express.static("./app"));

var pool = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'node_db'
});
pool.connect();
app.set('port', 8080);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyparser.urlencoded({ extended: false }));

app.get('/test', function (req, res) {
        var sql = mysql.format("SELECT * FROM users");
        pool.query(sql, function (error, results, fields) {
            if (error) {
                res.send(error);
            }
            res.send(results);
             pool.end();
        });
});

app.listen(app.get('port'));
console.log('Server Runnign on port localhost:' + app.get('port'));
[
    {
        "id": 1,
        "firstName": "shubham",
        "lastName": "verma",
        "userName": "shubham",
        "email": "shubham@email.com",
        "password": "25d55ad283aa400af464c76d713c07ad",
        "sessionId": "bdfb43ae-ee9e-4819-b35a-3cb254885023",
        "isLive": 1,
        "date": "2017-05-06T06:05:24.000Z"
    }
]
[
    {
        "id": 1,
        "firstName": "shubham",
        "lastName": "verma",
        "userName": "shubham",
        "email": "shubham@email.com",
        "password": "25d55ad283aa400af464c76d713c07ad",
        "sessionId": "bdfb43ae-ee9e-4819-b35a-3cb254885023",
        "isLive": 1,
        "date": "2017-05-06T06:05:24.000Z"
    }
]

如果不需要池,您可以使用以下代码:

FROM node:boron

# Create app directory
RUN mkdir -p /home/sameera/Desktop/test/app
WORKDIR /home/sameera/Desktop/test/app

# Install app dependencies


COPY package.json /home/sameera/Desktop/test/app
RUN npm install

# Bundle app source
COPY . /home/sameera/Desktop/test/app

EXPOSE 8080
CMD [ "npm", "start" ]
var express = require('express');
var path = require('path');
var mysql = require('mysql');
var app = express();
var bodyparser = require('body-parser');
var mongoose = require('mongoose');
app.use(express.static("./app"));

var pool = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'node_db'
});
pool.connect();
app.set('port', 8080);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyparser.urlencoded({ extended: false }));

app.get('/test', function (req, res) {
        var sql = mysql.format("SELECT * FROM users");
        pool.query(sql, function (error, results, fields) {
            if (error) {
                res.send(error);
            }
            res.send(results);
             pool.end();
        });
});

app.listen(app.get('port'));
console.log('Server Runnign on port localhost:' + app.get('port'));
[
    {
        "id": 1,
        "firstName": "shubham",
        "lastName": "verma",
        "userName": "shubham",
        "email": "shubham@email.com",
        "password": "25d55ad283aa400af464c76d713c07ad",
        "sessionId": "bdfb43ae-ee9e-4819-b35a-3cb254885023",
        "isLive": 1,
        "date": "2017-05-06T06:05:24.000Z"
    }
]
[
    {
        "id": 1,
        "firstName": "shubham",
        "lastName": "verma",
        "userName": "shubham",
        "email": "shubham@email.com",
        "password": "25d55ad283aa400af464c76d713c07ad",
        "sessionId": "bdfb43ae-ee9e-4819-b35a-3cb254885023",
        "isLive": 1,
        "date": "2017-05-06T06:05:24.000Z"
    }
]
结果如下:

FROM node:boron

# Create app directory
RUN mkdir -p /home/sameera/Desktop/test/app
WORKDIR /home/sameera/Desktop/test/app

# Install app dependencies


COPY package.json /home/sameera/Desktop/test/app
RUN npm install

# Bundle app source
COPY . /home/sameera/Desktop/test/app

EXPOSE 8080
CMD [ "npm", "start" ]
var express = require('express');
var path = require('path');
var mysql = require('mysql');
var app = express();
var bodyparser = require('body-parser');
var mongoose = require('mongoose');
app.use(express.static("./app"));

var pool = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'node_db'
});
pool.connect();
app.set('port', 8080);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyparser.urlencoded({ extended: false }));

app.get('/test', function (req, res) {
        var sql = mysql.format("SELECT * FROM users");
        pool.query(sql, function (error, results, fields) {
            if (error) {
                res.send(error);
            }
            res.send(results);
             pool.end();
        });
});

app.listen(app.get('port'));
console.log('Server Runnign on port localhost:' + app.get('port'));
[
    {
        "id": 1,
        "firstName": "shubham",
        "lastName": "verma",
        "userName": "shubham",
        "email": "shubham@email.com",
        "password": "25d55ad283aa400af464c76d713c07ad",
        "sessionId": "bdfb43ae-ee9e-4819-b35a-3cb254885023",
        "isLive": 1,
        "date": "2017-05-06T06:05:24.000Z"
    }
]
[
    {
        "id": 1,
        "firstName": "shubham",
        "lastName": "verma",
        "userName": "shubham",
        "email": "shubham@email.com",
        "password": "25d55ad283aa400af464c76d713c07ad",
        "sessionId": "bdfb43ae-ee9e-4819-b35a-3cb254885023",
        "isLive": 1,
        "date": "2017-05-06T06:05:24.000Z"
    }
]
但如果需要池,并且您想使用池,那么您应该尝试以下代码:

var express = require('express');
var path = require('path');
var mysql = require('mysql');
var app = express();
var bodyparser = require('body-parser');
var mongoose = require('mongoose');
app.use(express.static("./app"));

var pool = mysql.createPool({
    connectionLimit: 10,
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'node_db'
});

app.set('port', 8080);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyparser.urlencoded({ extended: false }));

app.get('/test', function (req, res) {
    pool.getConnection(function (err, connection) {
        var sql = mysql.format("SELECT * FROM users");
        connection.query(sql, function (error, results, fields) {
            if (error) {
                res.send(error);
            }
            res.send(results);
            connection.release();
        });
    });
});

app.listen(app.get('port'));
console.log('Server Runnign on port localhost:' + app.get('port'));
结果将是这样的:

FROM node:boron

# Create app directory
RUN mkdir -p /home/sameera/Desktop/test/app
WORKDIR /home/sameera/Desktop/test/app

# Install app dependencies


COPY package.json /home/sameera/Desktop/test/app
RUN npm install

# Bundle app source
COPY . /home/sameera/Desktop/test/app

EXPOSE 8080
CMD [ "npm", "start" ]
var express = require('express');
var path = require('path');
var mysql = require('mysql');
var app = express();
var bodyparser = require('body-parser');
var mongoose = require('mongoose');
app.use(express.static("./app"));

var pool = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'node_db'
});
pool.connect();
app.set('port', 8080);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyparser.urlencoded({ extended: false }));

app.get('/test', function (req, res) {
        var sql = mysql.format("SELECT * FROM users");
        pool.query(sql, function (error, results, fields) {
            if (error) {
                res.send(error);
            }
            res.send(results);
             pool.end();
        });
});

app.listen(app.get('port'));
console.log('Server Runnign on port localhost:' + app.get('port'));
[
    {
        "id": 1,
        "firstName": "shubham",
        "lastName": "verma",
        "userName": "shubham",
        "email": "shubham@email.com",
        "password": "25d55ad283aa400af464c76d713c07ad",
        "sessionId": "bdfb43ae-ee9e-4819-b35a-3cb254885023",
        "isLive": 1,
        "date": "2017-05-06T06:05:24.000Z"
    }
]
[
    {
        "id": 1,
        "firstName": "shubham",
        "lastName": "verma",
        "userName": "shubham",
        "email": "shubham@email.com",
        "password": "25d55ad283aa400af464c76d713c07ad",
        "sessionId": "bdfb43ae-ee9e-4819-b35a-3cb254885023",
        "isLive": 1,
        "date": "2017-05-06T06:05:24.000Z"
    }
]