How to provide a mysql database connection in single file in nodejs

前端 未结 6 632
一整个雨季
一整个雨季 2020-12-04 08:42

I need to provide the mysql connection for modules. I have a code like this.

var express = require(\'express\'),
app = express(),
server = require(\'http\').         


        
6条回答
  •  鱼传尺愫
    2020-12-04 09:42

    You could create a db wrapper then require it. node's require returns the same instance of a module every time, so you can perform your connection and return a handler. From the Node.js docs:

    every call to require('foo') will get exactly the same object returned, if it would resolve to the same file.

    You could create db.js:

    var mysql = require('mysql');
    var connection = mysql.createConnection({
        host     : '127.0.0.1',
        user     : 'root',
        password : '',
        database : 'chat'
    });
    
    connection.connect(function(err) {
        if (err) throw err;
    });
    
    module.exports = connection;
    

    Then in your app.js, you would simply require it.

    var express = require('express');
    var app = express();
    var db = require('./db');
    
    app.get('/save',function(req,res){
        var post  = {from:'me', to:'you', msg:'hi'};
        db.query('INSERT INTO messages SET ?', post, function(err, result) {
          if (err) throw err;
        });
    });
    
    server.listen(3000);
    

    This approach allows you to abstract any connection details, wrap anything else you want to expose and require db throughout your application while maintaining one connection to your db thanks to how node require works :)

提交回复
热议问题