2016-01-15 51 views
0

我對node.js很感興趣,並且表達如此耐心。跨我的快遞js應用程序使用mysql連接

我想知道如何獲得一個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; 
}; 

路線。 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' 
    }); 
}; 
+0

這裏的目標是通過node.js和建立一個DBMS來實現嗎?或者你必須使用MySQL? – OliverJ90

+0

我必須使用mysql – John

+0

所以你附加到一些已經存在的數據源? – OliverJ90

回答

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; 
+0

非常好!這正是我所需要的,非常感謝你!還有一個問題,如果你不介意,在你的控制器中做db連接是個好主意嗎?人們會認爲他們應該去模型。如果是這樣,你能提供一個模型和控制器如何相互作用的例子嗎? – John

+0

在控制器中使用db連接不是一個好主意。我會盡快鏈接一個例子。 – gnerkus

+0

很酷謝謝。 – John

相關問題