【问题标题】:Node.JS MySQL logging result to console without being asked to and acting strangelyNode.JS MySQL 将结果记录到控制台而不被要求和奇怪的行为
【发布时间】: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 是什么?
  • 它只是使文本在控制台中显示为黄色,如屏幕截图所示。它来自颜色模块。

标签: javascript mysql node.js discord.js


【解决方案1】:

您已经反转了errresult。对于回调,错误通常是回调的第一个参数,结果是其他参数。

你可以在the example here看到它。

所以

con.query(sql, function(result, err) {

应该是

con.query(sql, function(err, result) {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-20
    • 2012-01-13
    • 1970-01-01
    • 2021-10-04
    • 2019-08-16
    • 1970-01-01
    • 2013-05-28
    相关资源
    最近更新 更多