使用函数内部包含javascript使用require()

时间:2014-11-24 11:23:28

标签: javascript node.js code-reuse

在Node.js应用程序中,我试图在require()里面的main js上调用的javascript中使用函数。 比如说,我有一个js文件,它是数据库连接文件,并且具有可以在主javascript文件中使用的功能。 我为数据库js文件调用了require()。 现在使用main js文件中的变量,我想使用数据库js文件中的函数,因此我可以重用在数据库js中创建的连接对象。 我已经阅读过有关module.exports的内容,但我没有找到明确的解决方案。

请建议如何实现这一目标。

1 个答案:

答案 0 :(得分:3)

是的,您可以重复使用在不同文件中创建的连接对象。

代表。在你的main.js文件中:

var db=require("./db.js");
 var pool  =db().pool;
console.log(pool);
app.get("/",function(req,res){
    console.log("get request");


               pool.getConnection(function(err, conn) {
    if(!err) {
              console.log("connection open home");
              var stmt="select pass from login";
               conn.query(stmt,function(err,rows){
                 if(err)
                 {
                     res.render('pages/dberr');
                 }
                 else{
                    if(rows.length>0)// data found in database
                        {


                    console.log("row[0].uname"+rows[0].uname);

                         res.render('pages/home',{user:"guest"});

                    }else{ 
                    res.render('pages/login');

                            }
                 }

               });
              }
              else{
                console.log("error occured"+err);
                 res.render('pages/login');
              }
            conn.release();

              console.log("connection released");
    });



});

这里我导入db.js文件,它返回一个属性池,它被分配给main.js文件中的本地变量池,现在我可以照常使用。

和db.js文件

var mysql = require('mysql');
var db=function(){
    return{ 



        pool:  mysql.createPool({
  host     : process.env.IP,
  user     : process.env.C9_USER,
  password : '',
  port:3306,
  database: "node"
})



};
};

module.exports = db;

这很好用。