Есть ли способ вставить максимальное число, найденное на основе указанной группы номеров из таблицы в JavaScript? - PullRequest
0 голосов
/ 26 мая 2020

ПРОБЛЕМА: В настоящее время я запускаю al oop для вставки значений в MySQL DB.
В этом l oop я генерирую MAX (num), чтобы получить максимальное число в каждом группа хранения, которая была выбрана.
Затем приложение создает список с несколькими значениями, включая это максимальное число. В моем журнале консоли отображается RowDataPacket {MAX(Offset): 1}.
Однако при выполнении запроса INSERT база данных обновляется значением [object Object] вместо значения Max ID для этого хранилища.
Ниже я скопировал функцию над которым я сейчас работаю.
Любая помощь будет принята с благодарностью. Сообщите мне, если потребуется дополнительная информация. заранее спасибо.

function alertStoresByDc(){
  var returnedStoresbyDC = [];
  /**This method will return all IPs associated with the store number */           
  var db       = require('../app/model/connect_db');
  var mysql    = require('mysql');  
  var date     = new Date();      //Get todays date, and formats it into the following (yyyy/mm/dd/hh/mm/ss) for MySQL
  var today    =  date.toISOString().split('T')[0] + ' ' + date.toTimeString().split(' ')[0]; 
  var dcOpt    = document.getElementById("sendOptionDC");     //Getting the selected dc, then storing it into a variable
  var dcNumber = parseInt(dcOpt.options[dcOpt.selectedIndex].value);
  let message  = document.getElementById("alert-message").value;       //Get alert message from user input, then stores it into a variable 
  var sender   = 427750;

  //Confirms with the user before sending the alert message
  var r = confirm("Are you sure you want to send this alert? Press ok to confirm.");
  if (r==true) {
    //Gets store name, ip, and dc number 
    $queryStoresByDC = 'SELECT `StoreNumber` FROM `store` WHERE DCNum = ' + mysql.escape(dcNumber) + '; '
    db.query($queryStoresByDC, (err, rows) => {
      if(err)
        return console.log("An error occured with the query", err);
      }
      //Data returned from the MySQL database will be parsed by looping over the rows object. getting IP addresses, then adding to a list  
      rows.forEach( (row) => {
        console.log(`${row.StoreNumber}`);
        returnedStoresbyDC.push(`${row.StoreNumber}`); //Adding store numbers to the returnedStoresbyDC list
        document.getElementById("messageSentBoxInfo").innerHTML = "Alert message sent to the following stores in DC " + mysql.escape(dcNumber) + ": \n" + "Stores: " + returnedStoresbyDC; 
      });                                
      console.log("List of Stores: " + returnedStoresbyDC);

      var records = [];
      //Adds the message, store number, and todays date into the records array list for the insert statement
      returnedStoresbyDC.forEach((storeNum) => {

        //Getting max offset for current store    
        $queryOffsetByDC = 'SELECT MAX(Offset) FROM `messages_sent` WHERE `StoreNum` = ' + mysql.escape(storeNum) + '; '
        db.query($queryOffsetByDC, (err, offs) => {
          if(err){
            return console.log("An error occured with the query", err);
          }
          console.log(offs);
          records.push([message, storeNum, sender, offs, today]); 
          console.log(records);
          var sql = "INSERT INTO `messages_sent`(Message, StoreNum, AdminSender, Offset, DateSent) VALUES ?";
          db.query(sql, [records], (err) => {
            if (err) {
              return console.log("An error occured with the query", err);
            }
          });                    
        }); 
      }); 

    });  
    //Calling method to send kafka message by DC
    sendKafkaMsgByDC();
    txt = "Alert sent!";   
  }
  else{
    txt = "No alert update sent";
  }
  document.getElementById("msgOutcome").innerHTML = txt; 
}

1 Ответ

0 голосов
/ 26 мая 2020

Я разобрался. Я присвоил номеру MAX (Offset) идентификатор maxOffset, а затем сослался на него следующим образом: "offs [0] .maxOffset".

            //Getting max offset for current store    
            $queryOffsetByDC = 'SELECT MAX(Offset) as maxOffset FROM `messages_sent` WHERE `StoreNum` = ' + mysql.escape(storeNum) + '; '
            db.query($queryOffsetByDC, (err, offs) => {
                if(err){
                    return console.log("An error occured with the query", err);
                }
                console.log('Max Offset: ' + offs[0].maxOffset);
                records.push([message, storeNum, sender, parseInt(offs[0].maxOffset) + 1, today]); 
                //Inserts records with associated offset number
                var sql = "INSERT INTO `messages_sent`(Message, StoreNum, AdminSender, Offset, DateSent) VALUES ?";
                db.query(sql, [records], (err) => {
                    if (err) {
                        return console.log("An error occured with the query", err);
                    }
                });  

            }); 
...