Node.JS MySQL 将结果记录到控制台而不被要求和奇怪的行为
Posted
技术标签:
【中文标题】Node.JS MySQL 将结果记录到控制台而不被要求和奇怪的行为【英文标题】:Node.JS MySQL logging result to console without being asked to and acting strangely 【发布时间】:2020-12-26 06:56:36 【问题描述】:我在使用 Node.JS mysql 时遇到了一个新的非常奇怪的错误。即使我的代码中没有记录它的行,我似乎也在控制台中记录结果;同样,当我记录结果时,它会记录一个与看似自动记录的结果不同的结果,以及我使用 phpMyAdmin 时出现的结果。
这是我的代码(我已将其放入自己的文件中,以确保在我的其他文件中其他地方没有触发 console.log 的事件):
const config = require("./config.json");
const colors = require('colors');
var mysql = require('mysql');
function get_datetime()
let date_ob = new Date();
// current date
// adjust 0 before single digit date
let date = ("0" + date_ob.getDate()).slice(-2);
// current month
let month = ("0" + (date_ob.getMonth() + 1)).slice(-2);
// current year
let year = date_ob.getFullYear();
// current hours
let hours = date_ob.getHours();
// current minutes
let minutes = date_ob.getMinutes();
// current seconds
let seconds = date_ob.getSeconds();
// prints date & time in YYYY-MM-DD HH:MM:SS format
var dateTimeOfMessage = year + "-" + month + "-" + date + " " + hours + ":" + minutes + ":" + seconds;
return dateTimeOfMessage;
var currentdate = get_datetime();
// Check for expired users by taking current date from database for all users where date is within a reasonable range. (e.g. WHERE date = 2 days lower than get_datetime().)
// Remove users who have had the role for over 2 days unless they bought it.
var con = mysql.createConnection(
host: config.database.host,
user: config.database.user,
password: config.database.password,
database: config.database.name
);
con.connect(function(err)
if (err) throw err;
var sql = "SELECT userID FROM premium_trials WHERE DATEDIFF('" + currentdate + "', datereceived) >= 2 AND boughtPremium = 0;";
console.log(sql);
con.query(sql, function(result, err)
if (err) console.log(err);
con.end();
if (result == null || result == "")
console.log("null value".yellow);
console.log(result + " --- Result log on line 53");
else
console.log("Still working".green);
for (i = 0; i < result.length; i++)
console.log(result[i].userID);
);
);
这是我的控制台输出的文本版本:
SELECT userID FROM premium_trials WHERE DATEDIFF('2020-09-07 22:25:43', datereceived) >= 2 AND boughtPremium = 0;
[ RowDataPacket userID: '216324181783085056' ]
null value
null --- Result log on line 53
我还附上了 PHPMyAdmin 输出的图像,显示它是正确的。
【问题讨论】:
"null value".yellow
是什么?
它只是使文本在控制台中显示为黄色,如屏幕截图所示。它来自颜色模块。
【参考方案1】:
您已经反转了err
和result
。对于回调,错误通常是回调的第一个参数,结果是其他参数。
你可以在the example here看到它。
所以
con.query(sql, function(result, err)
应该是
con.query(sql, function(err, result)
【讨论】:
以上是关于Node.JS MySQL 将结果记录到控制台而不被要求和奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章
使用 node.js 将 JSON 写入 mysql 数据库