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