我正在开发一个nodejs模块,它将处理项目的所有SQL内容,我遇到了语言问题,javascript中没有父关系,我无法复制我的连接或者我会得到一个握手错误,那么如何在没有实例化设置对象的情况下对this.connection进行引用。
我知道这个问题可能有点广泛,但如果有人有解决方案或想法来解决这个问题,我想听听它,所以随意提出建议!
这是我目前的代码:
require("dotenv").config();
const mysql = require("mysql");
const sqlstring = require("sqlstring");
function setup(){
this.connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password : process.env.PASSWORD,
database : 'DISCORD'
}),
this.connect = function(){
this.connection.connect(function(err){
if(err){
throw err;
}
});
},
this.makeRequest = function(requestName, param){
this.connection.query("SELECT SQLQUERY FROM QUERYLIST WHERE NAME = " + this.formatString(requestName),function(err, result){
if(err){
throw err;
} else{
//-------- CAN'T CALL THIS NOT IN SETUP OBJECT ANYMORE
this.connection.query(result[0].SQLQUERY + this.formatString(param), function(err2, result2){
return result2;
});
}
});
},
this.formatString = function(string){
return sqlstring.escape(string);
}
}
我想做出类似这样的东西,但它不起作用......
this.makeRequest = function(requestName, param){
this.connection.query(result[0].SQLQUERY + this.formatString(param),this.test);
},
this.test = function(err, result){
//stuff
}
答案 0 :(得分:1)
我认为您正在寻找的是在不同的模块中重用您的mysql连接。这个类似的问题显示了如何这样做: How to properly pass mysql connection to routes with express.js
确保您设置一次mysql连接,让其他所有内容重用此连接。换句话说,使用Pool
变量as shown in the first answer.