无法将传感器数据插入数据库

时间:2018-10-12 04:35:36

标签: arrays node.js sql-server sensor

我正在尝试将传感器数据插入SQL Server数据库中。我尝试了所有可能的方法将传入的数据插入数据库,但是失败了。我是Nodejs的新手,我真的不知道为什么在执行过程中会发生这些错误。如果有人可以帮助我,那就太好了。

谢谢。

我得到的错误是:

  

TypeError:无法读取未定义的属性'writeHead'。

function addData (req, resp, reqBody, data)
{
    try {
        if (!reqBody) throw new Error("Input not valid");

      data = JSON.parse(reqBody);
        //reqBody = JSON.parse(data);
        if (data) {//add more validations if necessary
            var sql = "INSERT INTO arduinoData (Machine, StartTime, EndTime, LengthTime) VALUES ";
            sql += util.format("(%s, '%s', %s, %s) ", data.Machine, data.StartTime, data.EndTime, data.LengthTime);
            db.executeSql(sql, function (data, err) {
                if (err) {
                    httpMsgs.show500(req, resp, err);
                }
                else {
                    httpMsgs.send200(req, resp);
                }
            });
        }
        else {
            throw new Error("Input not valid");
        }
    }
    catch (ex) {
        httpMsgs.show500(req, resp, ex);
    }

};

function sendBackupData()
{
    var jsonTable = { "table": [] };
    fs.readFile("backup.json", "utf8", function (err, data) {
        if (err) throw err;
        jsonTable = JSON.parse(data);
        if (jsonTable.table.length == 0) {
            return;
        }

        for (var index = 0; index < jsonTable.table.length; index++) {
            var options = {
                url: serverURL,
                method: "POST",
                form: jsonTable.table.shift()
            };

            request.post(options, function (error, response, body) {
                if (!error) {
                    console.log("Sent backup message!");
                } else {
                    console.log('Error: ' + error);
                    console.log("CANT'T SEND BACK");
                    console.log(options.form);
                    jsonTable.table.push(options.form);
                }
            });
        }
        var outputJSON = JSON.stringify(jsonTable);
        console.log(outputJSON);
        fs.writeFile("backup.json", outputJSON, "utf8", function (err) {
            if (err) throw err;
            console.log("Sent backup data!");
        });
    });
}

function getTime()
{

    var date = new Date();
    var year = date.getFullYear();
    var month = ('0' + (date.getMonth() + 1)).slice(-2);
    var day = ('0' + date.getDate()).slice(-2);
    var hour = ('0' + date.getHours()).slice(-2);
    var minute = ('0' + date.getMinutes()).slice(-2);
    var second = ('0' + date.getSeconds()).slice(-2);

    // Unix Time
    var unixTime = Math.floor(date / 1000);

    // Check if it is day or night
    var isDay;
    if (date.getHours() >= 8 & date.getHours() < 16)
    {
        isDay = true;
    }
    else
    {
        isDay = false;
    }

    return [year + '-' + month + '-' + day, hour + ':' + minute + ':' + second, unixTime, isDay];
}

/*
--- Main Code ---
*/


function vibrationStart()
{
    /*
    Should get:
    - Start time and date the vibration started
    - Whether it was day or night
    Will send the message, if there is network connection, once complete.
    Will store message into a JSON file if there is no network connection.
    */
    var jsonTable = { "table": [] };
    var startTime = getTime();
    console.log(startTime[0] + " " + startTime[1]);

    var startData = {
        machine: machineName,
        start_time: startTime[0] + " " + startTime[1],
        day_night: startTime[3],
        active: "true"
    };

    const options = {
        url: serverURL,
        method: "POST",
        form: startData
    };

    var reqBody = [{
        Machine : "",
        StartTime : ""
    }];

    reqBody.push({"Machine" : startData.machine,"StartTime" : startData.start_time});
    var outputJSON = JSON.stringify(reqBody);

    request.post(options, function (error, response, body) {
        if (!error) {
            console.log("Sent starting message!");
            sendBackupData();
            addData();
        } else {
            console.log("CANT'T SEND");
            // Write to JSON file for backup if can't send to server
            fs.readFile("backup.json", "utf8", function readFileCallback(err, data) {
                if (err) throw err;
                jsonTable = JSON.parse(data);
                jsonTable.table.push(startData);
                var outputJSON = JSON.stringify(jsonTable);
                fs.writeFile("backup.json", outputJSON, "utf8", function (err) {
                    if (err) throw err;
                });
            });
        }
    });

    return startTime[2];
}

function vibrationStop(startTimeUnix)
{

    var jsonTable = { "table": [] };
    var endTime = getTime();
    console.log(endTime[0] + " " + endTime[1]);
    var endTimeUnix = endTime[2];
    var lengthTime = endTimeUnix - startTimeUnix;
    console.log("Length time: " + lengthTime);

    var endData = {
        machine: machineName,
        end_time: endTime[0] + " " + endTime[1],
        length_time: lengthTime,
        active: "false"
    };

    const options = {
        url: serverURL,
        method: "POST",
        form: endData
    };

        var reqBody = [{
        EndTime : "",
        LengthTime :"",
    }];
    reqBody.push({"EndTime" : endData.end_time,"LengthTime" : endData.length_time});
    var outputJSON = JSON.stringify(reqBody);

    request.post(options, function (error, response, body) {
        if (!error) {

            console.log("Sent end message!");
            sendBackupData();
            addData()
        } else {
            console.log("CANT'T SEND");

            // Write to JSON file for backup if can't send to server
            fs.readFile("backup.json", "utf8", function readFileCallback(err, data) {
                if (err) throw err;
                jsonTable = JSON.parse(data);
                jsonTable.table.push(endData);
                var outputJSON = JSON.stringify(jsonTable);
                fs.writeFile("backup.json", outputJSON, "utf8", function (err) {
                    if (err) throw err;
                });
            });
        }
    });

}

http.createServer(function (req, resp) {
    
app.get('/', addData);

}).listen(settings.webPort, function () {
    console.log("Started listening at: " + settings.webPort);
});

0 个答案:

没有答案