在我的快递js应用程序

时间:2016-01-15 23:40:37

标签: javascript mysql express

我是node.js的新手并且表示请耐心等待。

我想知道如何获取一个mysql实例并在我的控制器中使用它。我有4个看起来像这样的文件:

在controller.js文件中查看我的评论

server.js:

var express = require('./config/express');
var app = express();
module.exports = app;
app.listen(3000);
console.log('server running');

express.js:

var express = require('express'),
bodyParser = require('body-parser'),
mysql = require('mysql');

module.exports = function() {
var app = express();

app.use(bodyParser.urlencoded({
    extended: true
}));

app.use(bodyParser.json());

app.set('views','./app/views');
app.set('view engine','ejs');

//NOT SURE WHAT TO DO HERE OR WHERE TO PUT THE CONNECTION DETAILS

var dbConnection = mysql.createConnection({
    host     : 'localhost',
    user     : 'someuser',
    database : 'somedb',
    password : 'somepass'
});

//connection.connect();
//
//connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
//    if (err) throw err;
//    console.log('The solution is: ', rows[0].solution);
//});
//
//connection.end();


require('../app/routes/index.server.routes.js')(app);

app.use(express.static('./public'));
return app;
};

routes.js:

module.exports = function(app) {
  var index = require('../controllers/index.server.controller');
  app.get('/', index.render);
  app.post('/', index.stuff);
};

controller.js:

 exports.render = function(req, res) {
   //DO DB STUFF HERE

   res.render('index', {
     title: 'this is the title'
   });
 };

exports.stuff = function(req, res) {
  res.render('index', {
    title: 'this is the title post'
  });
};

1 个答案:

答案 0 :(得分:1)

要在控制器中使用连接实例,您需要将它从express.js文件传递到controller.js文件。第一步是将连接实例传递给路由器:

<强> express.js

require('../app/routes/index.server.routes.js')(app, connection);

这将使其在routes.js文件中可用。然后,您需要将相同的连接实例传递给控制器​​。

<强> index.server.routes.js

module.exports = function(app, connection) {
  var index = require('../controllers/index.server.controller')(connection);
  app.get('/', index.render);
  app.post('/', index.stuff);
};

控制器需要重构,因此它将连接实例作为参数:

<强> index.server.controller.js

function IndexController(connection) {
    controllerMethods = {};
    controllerMethods.render = function (req, res) {
        // You can use the connection instance here.
        connection.connect()
        // Run your query
        connection.end()
        ...
    };

    // Define other methods for the controller

    // Return the object that holds the methods.
    return controllerMethods;
}

module.exports = IndexController;