Javascript 正在使用Nodejs保存数据脱机地址

Javascript 正在使用Nodejs保存数据脱机地址,javascript,mysql,node.js,Javascript,Mysql,Node.js,我正在尝试开发一个不在浏览器上运行的节点应用程序。数据库是mysql。它应该在机器脱机时将post请求中的数据存储到本地数据库,并在机器重新联机时将数据发布到远程服务器。当用户脱机时,我无法将数据发布到本地数据库。 我得到一个错误错误:listen EADDRINUSE:address已在使用0.0.0.0:1440,即使在终止所有节点进程之后也是如此。当我使用sudolsof-i:1440使用端口查找进程时,我的控制台是空的 在离线部分(即catch块)中添加块之前,我也没有出现错误 如果您对

我正在尝试开发一个不在浏览器上运行的节点应用程序。数据库是mysql。它应该在机器脱机时将post请求中的数据存储到本地数据库,并在机器重新联机时将数据发布到远程服务器。当用户脱机时,我无法将数据发布到本地数据库。 我得到一个错误
错误:listen EADDRINUSE:address已在使用0.0.0.0:1440
,即使在终止所有节点进程之后也是如此。当我使用
sudolsof-i:1440使用端口查找进程时,我的控制台是空的

在离线部分(即catch块)中添加块之前,我也没有出现错误

如果您对如何处理数据库连接或在运行服务器时我的端口已被使用的可能原因有任何建议,我们将不胜感激

我的代码如下所示

var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
var config_local = require('../db_config/config_local');
var config_remote = require('../db_config/config_remote');

module.exports = function (app) {

    app.post("/hl7_message", function (req, res) {

        "use strict";
        //var hl7_message = req.body 
        var hl7_message = {"MESSAGE_HEADER":{"SENDING_APPLICATION":"KENYAEMR","SENDING_FACILITY":"13939","RECEIVING_APPLICATION":"IL","RECEIVING_FACILITY":"13939","MESSAGE_DATETIME":"20210212090359","SECURITY":"","MESSAGE_TYPE":"SIU^S12","PROCESSING_ID":"P"},"PATIENT_IDENTIFICATION":{"EXTERNAL_PATIENT_ID":{"ID":"","IDENTIFIER_TYPE":"GODS_NUMBER","ASSIGNING_AUTHORITY":"MPI"},"INTERNAL_PATIENT_ID":[{"ID":"13939-15477","IDENTIFIER_TYPE":"CCC_NUMBER","ASSIGNING_AUTHORITY":"CCC"}],"PATIENT_NAME":{"FIRST_NAME":"JOHN","MIDDLE_NAME":"OTIENO","LAST_NAME":"LUSI"},"MOTHER_NAME":{"FIRST_NAME":"","MIDDLE_NAME":"","LAST_NAME":""},"DATE_OF_BIRTH":"","SEX":"","PATIENT_ADDRESS":{"PHYSICAL_ADDRESS":{"VILLAGE":"","WARD":"","SUB_COUNTY":"","COUNTY":"","GPS_LOCATION":"","NEAREST_LANDMARK":""},"POSTAL_ADDRESS":""},"PHONE_NUMBER":"","MARITAL_STATUS":"","DEATH_DATE":"","DEATH_INDICATOR":"","DATE_OF_BIRTH_PRECISION":""},"APPOINTMENT_INFORMATION":[{"APPOINTMENT_REASON":"","ACTION_CODE":"A","APPOINTMENT_PLACING_ENTITY":"KENYAEMR","APPOINTMENT_STATUS":"PENDING","APPOINTMENT_TYPE":"","APPOINTMENT_NOTE":"N/A","APPOINTMENT_DATE":"20210507","PLACER_APPOINTMENT_NUMBER":{"ENTITY":"KENYAEMR","NUMBER":""}}]}

        internetAvailable().then(function(){
            console.log("Internet available");
        
            // If internet push data from local to live
        
            var connection = mysql.createConnection(config_remote.localDatabaseOptions);
            connection.connect(function(err) {
                if (err){console.log(err);} 
                else {
        
                    connection.query("select f_name, m_name , l_name , dob , clinic_number , mfl_code , gender , marital , phone_no , GODS_NUMBER , group_id , SENDING_APPLICATION , PATIENT_SOURCE , enrollment_date , client_type , partner_id , processed from clients ", function (err, result, fields) {

                        if(err) {console.log(err)};
                        console.log(result)
        
                    }); 
                } 
            }); 
        
            }).catch(function(){
                console.log("No internet, saving data locally");
        
                //if offline push data from request to local db
        
                var connection = mysql.createConnection(config_local.localDatabaseOptions);
                var DATE_TODAY = moment(new Date()).format("YYYY-MM-DD");
                var message_type = hl7_message.MESSAGE_HEADER.MESSAGE_TYPE;
                var SENDING_APPLICATION = hl7_message.MESSAGE_HEADER.SENDING_APPLICATION;
                var MESSAGE_DATETIME = hl7_message.MESSAGE_HEADER.MESSAGE_DATETIME;
        
                if (SENDING_APPLICATION === 'KENYAEMR' || SENDING_APPLICATION === 'ADT') {
        
                     if (message_type == "SIU^S12") {
                        var GODS_NUMBER = hl7_message.PATIENT_IDENTIFICATION.EXTERNAL_PATIENT_ID.ID;
                        var SENDING_FACILITY;
            
                        var CCC_NUMBER;
                        var APPOINTMENT_REASON;
                        var APPOINTMENT_TYPE;
                        var APPOINTMENT_DATE;
                        var APPOINTMENT_PLACING_ENTITY;
                        var APPOINTMENT_LOCATION;
                        var ACTION_CODE;
                        var APPOINTMENT_NOTE;
                        var APPOINTMENT_HONORED;
            
                        var result = get_json(hl7_message);
            
                        for (var i = 0; i < result.length; i++) {
                            var key = result[i].key;
                            var key_value = result[i].value;
            
                            if (key == "SENDING_FACILITY") {
                                SENDING_FACILITY = result[i].value;
                            } else if (key == "GODS_NUMBER") {
                                GODS_NUMBER = result[i].value;
                            } else if (key == "APPOINTMENT_REASON") {
                                APPOINTMENT_REASON = result[i].value;
                            } else if (key == "APPOINTMENT_TYPE") {
                                APPOINTMENT_TYPE = result[i].value;
                            } else if (key == "APPOINTMENT_LOCATION") {
                                APPOINTMENT_LOCATION = result[i].value;
                            } else if (key == "APPINTMENT_HONORED") {
                                APPOINTMENT_HONORED = result[i].value;
                            } else if (key == "APPOINTMENT_NOTE") {
                                APPOINTMENT_NOTE = result[i].value;
                            } else if (key == "ACTION_CODE") {
                                ACTION_CODE = result[i].value;
                            } else if (key == "APPOINTMENT_PLACING_ENTITY") {
                                APPOINTMENT_PLACING_ENTITY = result[i].value;
                            } else if (key == "APPOINTMENT_DATE") {
                                APPOINTMENT_DATE = result[i].value;
                                APPOINTMENT_DATE = APPOINTMENT_DATE;
            
                                var year = APPOINTMENT_DATE.substring(0, 4);
                                var month = APPOINTMENT_DATE.substring(4, 6);
                                var day = APPOINTMENT_DATE.substring(6, 8);
            
                                var app_date = year + "-" + month + "-" + day;
            
                                var current_date = moment(new Date());
                                var today = current_date.format("YYYY-MM-DD");
            
                                var BirthDate = moment(app_date);
                                APPOINTMENT_DATE = BirthDate.format("YYYY-MM-DD");
                            }
                            
                            if (key == "ID") {
                                if (result[i + 1].value == "CCC_NUMBER") {
                                    CCC_NUMBER = result[i].value;
                                }
                            }
                        }
            
                        if (CCC_NUMBER.length != 10 || isNaN(CCC_NUMBER)) {
                            console.log("Invalid CCC NUMBER");
                        }
            
                        if (!APPOINTMENT_TYPE) {
                            APPOINTMENT_TYPE = 1;
                        }
        
                        connection.connect(function(err) {
                            if (err){console.log(err);
        
                            } else {
        
                                if (APPOINTMENT_LOCATION == "PHARMACY" || APPOINTMENT_REASON == "REGIMEN REFILL") {
                                    APPOINTMENT_TYPE = 1;
                                } else {
                                    APPOINTMENT_TYPE = 2;
                                }
        
                                var APP_STATUS = "Booked";
                                var ACTIVE_APP = "1";
                                var SENDING_APPLICATION = hl7_message.MESSAGE_HEADER.SENDING_APPLICATION;
                                if (ACTION_CODE == "A") {
        
                                
                                    var appointment_sql =
                                    "Insert into appointment (client_id,appntmnt_date,app_type_1,APPOINTMENT_REASON,app_status,db_source,active_app,APPOINTMENT_LOCATION,reason) VALUES ('" +
                                    client_id +
                                    "', '" +
                                    APPOINTMENT_DATE +
                                    "','" +
                                    APPOINTMENT_TYPE +
                                    "','" +
                                    APPOINTMENT_REASON +
                                    "','" +
                                    APP_STATUS +
                                    "','" +
                                    SENDING_APPLICATION +
                                    "','" +
                                    ACTIVE_APP +
                                    "','" +
                                    APPOINTMENT_LOCATION +
                                    "','" +
                                    APPOINTMENT_NOTE +
                                    "')";
                                }
            
                                // Use the connection
                                console.log(appointment_sql);
                                connection.query(appointment_sql, function(
                                    error,
                                    results,
                                    fields
                                ) {
                                    if (error) { console.log(error) } 
                                    else { console.log(results) }
                                    // And done with the connection.
                                    connection.release();
        
                                    // Don't use the connection here, it has been returned to the pool.
                                });
                            } 
        
                        });  
                    }
        
                } else {
        
                    console.log("IQCare Message, skip")
                }   
        
            });

    });

    // Tell our app to listen on port 3000

    app.listen(1440, function (err) {

        if (err) { log.info(err) } 
        else { console.log("T4A HL7 Consumer Server started on port 1440")}

    });

};

//convert json object to key value pairs
function get_json(hl7_message) {
    var output = [];

    for (var x in hl7_message) {
        if (typeof hl7_message[x] === "object") {
            output = output.concat(get_json(hl7_message[x]));
        } else {
            output.push({
                key: x,
                value: hl7_message[x],
            });
        }
    }

    return output;
}
var-app=express();
use(bodyParser.json());
use(bodyParser.urlencoded({extended:true}));
var config_local=require('../db_config/config_local');
var config_remote=require('../db_config/config_remote');
module.exports=函数(应用程序){
应用程序post(“/hl7_消息”),功能(请求、回复){
“严格使用”;
//var hl7_消息=请求正文
var hl7_message={“message_HEADER”:{“SENDING_APPLICATION”:“KENYAEMR”,“SENDING_FACILITY”:“13939”,“RECEIVING_APPLICATION”:“IL”,“RECEIVING_FACILITY”:“13939”,“message_DATETIME”:“20210212090359”,“SECURITY”:“message_TYPE”:“SIU^S12”,“PROCESSING_ID”:“P”;“PATIENT_IDENTIFICATION”:“外部_PATIENT_ID”:“ID”:{“ID”:“ID”:“标识符_TYPE”:“神号”,“分配机构”:“MPI”},“内部患者ID”:[{“ID”:“13939-15477”,“标识符类型”:“CCC编号”,“分配机构”:“CCC”}],“患者姓名”:{“名字”:“约翰”,“中间姓名”:“奥蒂诺”,“姓氏”:“卢西”},“母亲姓名”:“中间姓名”:“姓氏”:“出生日期”:“性别”:“患者地址”:“实际地址”:村庄:“,”病房:“,”副县:“,”县:“,”全球定位系统位置:“,”最近的地标:“,”邮政地址:“,”电话号码:“,”婚姻状况:“,”死亡日期:“,”死亡指标:“,”出生日期精度:“,”,“,”预约信息:“[{”预约原因:“,”行动代码:“,”预约单位:“,”预约单位:“:”凯尼亚埃姆“,”预约状况“:”待定,“任命类型”:“任命注释”:“不适用”,“任命日期”:“20210507”,“任命编号”:{“实体”:“肯尼亚埃米尔”,“编号”:“}}}
internetAvailable().then(函数()){
console.log(“互联网可用”);
//如果互联网将数据从本地推送到现场
var connection=mysql.createConnection(config\u remote.localDatabaseOptions);
connection.connect(函数(err){
if(err){console.log(err);}
否则{
连接.查询(“选择f_姓名、m_姓名、l_姓名、dob、诊所号码、mfl_代码、性别、婚姻、电话号码、神号、组id、发送申请、患者来源、注册日期、客户类型、合作伙伴id、从客户处处理的信息”),函数(错误、结果、字段){
if(err){console.log(err)};
console.log(结果)
}); 
} 
}); 
}).catch(函数(){
console.log(“无互联网,在本地保存数据”);
//如果脱机,则将数据从请求推送到本地数据库
var connection=mysql.createConnection(config_local.localDatabaseOptions);
var DATE_TODAY=时刻(新日期()).格式(“YYYY-MM-DD”);
var message_type=hl7_message.message_HEADER.message_type;
var SENDING_APPLICATION=hl7_message.message_HEADER.SENDING_APPLICATION;
var MESSAGE_DATETIME=hl7_MESSAGE.MESSAGE_HEADER.MESSAGE_DATETIME;
如果(发送应用程序==='KENYAEMR'| |发送应用程序==='ADT'){
如果(消息类型==“SIU^S12”){
var\u NUMBER=hl7\u message.PATIENT\u IDENTIFICATION.EXTERNAL\u PATIENT\u ID.ID;
var发送设备;
变量CCC_数;
风险价值与理性;
var-u型;
var任命日期;
var任命和配售实体;
var和U位置;
var动作码;
var任命单;
获得荣誉;
var result=get_json(hl7_消息);
对于(变量i=0;i