【问题标题】:Node JS setInterval. TypeError: Cannot read property 'apply' of undefined节点 JS 设置间隔。 TypeError:无法读取未定义的属性“应用”
【发布时间】:2015-07-24 08:27:12
【问题描述】:

我是 Nowfal,一个 c# 程序员。我是 Node JS 的新手。 当我创建一个函数并在 setInterval 中给出一个错误时,发生了 TypeError:无法读取未定义的属性“应用”

在包装器 [as _onTimeout] (timers.js:274:13)

在 Timer.listOnTimeout (timers.js:119:15)

我的代码页如下所示

第 1 页(Server.js)

var db = require('./dbConnect.js');
var ins = require('./dbInsert.js');

var tagId = [];
var schoolInfoId = [];
var imeNo = [];
var totalRows = 0;

function ViewQuery() {
    var mysql = db.mysql;
    var connection = db.createMyConnection();


    connection.connect();


    var mycommand = "SELECT     t.skha_tag_id_no,s.skha_school_info_id,a.skha_out_device_imeno" +
        " FROM skha_tag t INNER JOIN skha_student_info s on skha_tag_id     = skha_student_tag_id_no " +
         " INNER JOIN skha_student_school_attendance a on     a.skha_student_info_id = s.skha_student_info_id" +
         " WHERE DATE(skha_student_in_time) = CURDATE() AND     skha_student_out_time IS NULL and skha_out_status = 1 ";

     connection.query(mycommand, function (err, rows) {
        if (!err) {

         var result;
            for (i = 0; i < rows.length; i++) {
                totalRows++;

                result = rows[i];

                tagId.push(result['skha_tag_id_no']);
                schoolInfoId.push(result['skha_school_info_id']);
                imeNo.push(result['skha_out_device_imeno']);

            }


            for (i = 0; i < totalRows; i++) {
                ins.insertDB(tagId[i], schoolInfoId[i], imeNo[i]);
            }

        }
        else
            console.log('Error while performing Query.');
    });

    connection.end();

};

setInterval(ViewQuery(),30000); //Error Generating from here

第 2 页(dbConnect.js)

var mysql = require('mysql');

exports.createMyConnection = function createMyConnection() {
    var connection = mysql.createConnection( {
        host    : '192.168.0.175',
        user    : 'ss_user',
        password : 'df33-ccff2188',
        database : 'shkaliasdb',
        multipleStatements: true
    });
    return connection;
}

exports.mysql = mysql;

第 3 页 (dbInsert.js)

var db = require('./dbConnect.js');

var logOutTimeInterval = 5;
exports.insertDB = function (RFID, schoolID, imei) {

    var mysql = db.mysql;
    var connection = db.createMyConnection();

    connection.connect();
    console.log('IMEI : ' + imei);
    console.log(RFID);



    str = "SET @OutStatus=0;SET @logOutTime=0;call     out_mark_save_two_device('" + RFID + "'," + schoolID + "," +      logOutTimeInterval + ",@OutStatus,@logOutTime," + imei + ")";

    console.log(str);


    connection.query(str, function (err, rows, fields) {//, fields
        if (err)
            console.log('Error while performing Query.' + err);
         else {
            console.log(rows[0]);

        }
    });

    connection.end();


};

第一次代码正常工作,然后显示错误消息,计时器不工作。

请给我任何解决方案... 在此先感谢..

【问题讨论】:

  • 您的代码容易受到SQL Injection 的攻击。 从不 使用字符串连接来构建 SQL 查询。 总是使用参数化查询。
  • 感谢 Richard Deeming.. 我知道这个查询的问题。当我实时实现这一点时,我会避免这种情况。但是,我无法为我的实际问题找到任何解决方案。你能帮我吗?

标签: .net node.js timer error-handling


【解决方案1】:

显示来自 timers.js 的代码。 您从未定义的对象调用“应用”方法。方法“应用”工作

【讨论】:

  • 我还没有为 timers.js 编写代码。创建项目时会自动映射到项目中
猜你喜欢
  • 2017-03-12
  • 2018-11-30
  • 2018-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-17
  • 1970-01-01
相关资源
最近更新 更多