最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript 使用命令行更改默认的硬编码值

网站源码admin42浏览0评论

javascript 使用命令行更改默认的硬编码值

javascript 使用命令行更改默认的硬编码值

我想添加一个功能,当用户在命令行“node filename.js option”中输入时,它会要求用户输入 batchSize、startDate、endDate、frequencyUpload 的新默认值,当我再次运行“node”时filename.js' 新输入的值现在将是默认值。

我试过了,但没用

const sql = require('mssql');
const jwt = require('jsonwebtoken');
const axios = require('axios');
const ms = require('ms');
const { format } = require('date-fns');

const config = {
    user: 'leo',
    password: 'Leocoronel24',
    server: '192.168.13.33',
    database: 'TKMANAGER',
    port: 1433,
    options: {
        encrypt: false,
        trustServerCertificate: true
    }
};

const logs = [];
let intervalId;

// create a function to connect to the database and retrieve data
async function getData(batchSize, startDate, endDate) {
  // your existing code for getting data goes here
  try {
    // connect to the database
    await sql.connect(config);
    console.log('Connected to the database');

    const formattedStartDate = format(new Date(startDate), 'yyyy-MM-dd HH:mm:ss');
    const formattedEndDate = format(new Date(endDate), 'yyyy-MM-dd HH:mm:ss');

    


    // create a request object to retrieve data
    let sqlquery = `SELECT TOP ${batchSize} Employeenum, DTRDATE, COMPANYID, FUNCTIONKEY, 
    CASE WHEN FunctionKey = 1 THEN DTRTIMEIN ELSE DTRTIMEOUT END AS TRANSACTIONTIME,
    [NAME], SeqID
    FROM viewDTR1 
    WHERE DTRDATE BETWEEN '${formattedStartDate}' AND '${formattedEndDate}'`;
    //WHERE DTRDATE BETWEEN '2023-03-01' AND '2023-03-15'`;

    const result = await sql.query(sqlquery);

    let entries = result.recordset.map(row => ({
        dtrdate: row.DTRDATE,
        datetime: row.TRANSACTIONTIME,
        type: String(row.FUNCTIONKEY),
        location: row.NAME,
        company: row.COMPANYID,
        cardno: row.Employeenum,
        ipaddress: '192.168.1.1'
    }));

    let data = { entries: entries };

    //console.log(JSON.stringify(data));
    
    console.log(JSON.stringify(data, null, 4));
    //logs.push(`Retrieved ${entries.length} entries at ${transactionTime()}.`);
    //logs.push(`Retrieved data: ${JSON.stringify(entries, null, 4)}\n at ${transactionTime()}.`);
    logs.push(`Retrieved data: ${JSON.stringify(entries)}\n at ${transactionTime()}.`);

    const response = await axios.post(':8000/tkserve/uptk.php', {          
        entries
    }, {
        headers: {
            'Content-Type': 'application/json' 
        },
        method: 'POST'
    });

    console.log(response.data);

} catch (error) {
    console.log(error);
} finally {
    sql.close();
    console.log('Disconnected from the database');
}
}


function isValidDate(dateString) {
  const regex = /^\d{4}-\d{2}-\d{2}$/;
    if(!regex.test(dateString)) {
        return false;
    }
    const date = new Date(dateString);
    if (isNaN(date.getTime())) {
        return false;
    }
    return true;
}

function transactionTime() {
 
  const now = new Date();
  return format(now, 'yyyy-MM-dd HH:mm:ss');
}

function startDataRetrieval(batchSize, uploadFrequency, startDate, endDate) {
  const transactionStartTime = transactionTime();
  console.log(`Transaction started at ${transactionStartTime}`);
  getData(batchSize, startDate, endDate);
  intervalId = setInterval(() => {
    getData(batchSize, startDate, endDate);
  }, ms(uploadFrequency));
}

function stopDataRetrieval() {
  clearInterval(intervalId);
}

const defaults = {
  batchSize: 10,
  startDate: '2023-01-01',
  endDate: '2023-01-31',
  uploadFrequency: '10s'
};

// parse command-line arguments for batch size, start date, end date, and upload frequency
let args = process.argv.slice(2);
if(args[0] === 'option'){
  function promptForNewValues() {
    rl.question('Enter new default batchSize: ', (batchSize) => {
      rl.question('Enter new default startDate (yyyy-mm-dd): ', (startDate) => {
        rl.question('Enter new default endDate (yyyy-mm-dd): ', (endDate) => {
          rl.question('Enter new default uploadFrequency (e.g. 10s, 1m, 1h): ', (uploadFrequency) => {
            // update defaults here
            defaults.batchSize = batchSize;
            defaults.startDate = startDate;
            defaults.endDate = endDate;
            defaults.uploadFrequency = uploadFrequency;
            console.log('Defaults updated.');
            rl.close();
          });
        });
      });
    });
  }
}
else{
  let batchSize = args[0] || defaults.batchSize;
let startDate = args[1] || defaults.startDate;
let endDate = args[2] || defaults.endDate;
let uploadFrequency = args[3] || defaults.uploadFrequency;

if (!isValidDate(startDate) || !isValidDate(endDate)) {
  console.log('Invalid date format. Please enter dates in yyyy-mm-dd format.');
} else if (startDate === endDate) {
  console.log('Start date and end date should not be the same.');
} else {
  startDataRetrieval(batchSize, uploadFrequency, startDate, endDate);
}

}
const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});






// allow user to stop data retrieval by pressing "s" or "S"
process.stdin.setRawMode(true);
process.stdin.resume();
process.stdin.on('data', (data) => {
  if (data.toString().trim() === 'p' || data.toString().trim() === 'P') {
    stopDataRetrieval();
    console.log('Data retrieval stopped.');
    process.exit();
  } else if (data.toString().trim() === 'c' || data.toString().trim() === 'C') {
    promptForNewValues();
  }
});

console.log('Press "p" or "P" to stop data retrieval.');
console.log('Press "c" or "C" to update default values.');


回答如下:
发布评论

评论列表(0)

  1. 暂无评论