Javascript NODEJS mysql结果未定义
您好,我发现节点mysql有问题Javascript NODEJS mysql结果未定义,javascript,mysql,node.js,discord.js,Javascript,Mysql,Node.js,Discord.js,您好,我发现节点mysql有问题 client.on('message', message => { var con = mysql.createConnection({ host: config.host, user: config.user, password: config.password, database: config.database }); //con.connect(function (err){ i
client.on('message', message => {
var con = mysql.createConnection({
host: config.host,
user: config.user,
password: config.password,
database: config.database
});
//con.connect(function (err){ i was try with this
//if(err) console.log(err); i was try with this
con.query(`SELECT * FROM servers`, function (err, result){
result.forEach(row => {
if(row.guild === message.guild.id){
//some code
}
}
}
20/30分钟,一切正常。
但后来我就崩溃了。
我找到了一个解决办法
client.on('message', message => {
var con = mysql.createConnection({
host: config.host,
user: config.user,
password: config.password,
database: config.database
});
con.query(`SELECT * FROM servers`, function (err, result){
if(result){
result.forEach(row => {
if(row.guild === message.guild.id){
//some code
}
}
}else{
console.log("no result");
}
}
但后来我只收到垃圾邮件“没有结果”,没有任何效果。
有人知道如何让它不仅在20分钟内仍能工作吗?MySQL连接超时。我没想到会在30分钟内发生,但我觉得这就是问题所在。而是使用池连接。另外,最好将它放在
client.on('message',message=>{})之外代码>,然后从内部引用它。例如:
const mysql = require('mysql');
var db_config = {
host: 'localhost',
user: 'root',
password: '',
database: 'mybots-db'
};
var con = mysql.createPool(db_config);
con.getConnection(function (err, con) {
if (err) {
connection.release();
console.log(' Error getting mysql_pool connection: ' + err);
throw err;
}
console.log('Connected to Database');
});
client.on('message', message => {
//Your code here
});
作为旁注,如果您想检查是否有结果,可以使用if(typeof result[0]=='undefined')返回console.log(“它没有定义!”)来轻松完成代码>旁注:您应该创建一个全局连接对象。不是每一个“信息”你receive@Marc但是当我在上面做mysql.createConnection时,我在添加con.end()时得到了连接超时;forEach不想工作。不要关闭连接。保持它们的开放性并重复使用。只有当你退出你的程序时才关闭它,然后我得到了连接超时。你说的超时是什么意思?!您可以重用现有的mysql连接来执行多个查询。在查询服务器之前,请等待连接成功。谢谢。但是当我需要在客户端中使用一些数据时,在('message',message=>
上,或者需要向数据库中添加一些内容。我该怎么做?像以后一样?con.query
?@xmxf是的,假设您想在客户端中向数据库添加每条消息。在('message',message=>
上,放入con.query(“插入到tablename(id,message)中)值(?,)”,[message.id,message.content]
Ok我测试了它。它的工作时间长得多,但看看这个: