узел js проверяет, существуют ли данные в таблице mysql.- TypeError: res.send не является функцией

#javascript #jquery #mysql #ajax #node.js

#javascript #jquery #mysql #ajax #node.js

Вопрос:

Я пытаюсь проверить, существуют ли данные в таблице mysql. Я получаю ошибку TypeError: res.send не является функцией.

В моей таблице mysql много данных, но 3 столбца со всеми переменными (45) и идентификатором (автоинкрементным), который —

 **id | metrics | custom_metrics**
  1  | test    | test
  

мой js-файл внутри маршрутов —

     router.post('/addcustom',function(req,res){
        try {
            /*if (req.body != null) {*/
                var customMetric = req.body.customMetric;
                //var metrics = req.body.metrics;
                var comma = ',';
                console.log("***CUSTOMMETRIC1: " JSON.stringify(customMetric)  "comma: " comma);
                // check if data exists in table start
                connection.query('select custom_metrics from metrics_list where custom_metrics = ?',[customMetric], function(err, result, response) {
                     if (err) {
                        console.log('Count Error :'   err);
                    } else {
                        console.log("METRICS WHERE FOUND: " JSON.stringify(result) "****req.body.customMetric== " customMetric);
                        var res = JSON.stringify(result);

                        if(result!=''||result!=null){

                           res.send('yes');

                           return false;

                        } else {
                            console.log("NOT FOUND");
                        }
                    }
                }); //select custom metrics validation check query

            //check if data exists in table end
            /*connection.query('INSERT INTO metrics_list (customMetric,metrics) values ("'   customMetric   '"'  comma  '"'   metrics  '")', function(err, result) {*/
                connection.query('SELECT COUNT(DISTINCT custom_metrics) FROM metrics_list;', function(err, result) {
                if (err) {
                    console.log('Count Error :'   err);
                } else {
                    console.log('Metrics Successfully Counted:'   JSON.stringify(result));
                   // console.log("CUSTOMMETRIC HTML req: " customMetric);
             // connection query nesting 1start
                   var id1 = JSON.stringify(result).replace(/D/g,'');
                   console.log("ID1: " id1);
                    connection.query('UPDATE metrics_list SET custom_metrics = ? WHERE id = ?', [customMetric,id1], function(err, result1) {
                    if (err) {
                      console.log('Count Error :'   err);
                    } else {
                       console.log(" Update Successfully " JSON.stringify(result1));
                      //res.redirect('/metrics/add');
                   }
                    });

                }
            });
        /*}*/
    } catch (ex) {
        console.log("Exception : "   ex);
    } 
})
  

Мой вызов ajax на странице html-

 <script type="text/javascript">
    $(document).ready(function() {

        $('#addbtn').on('click',function(){
            var customMetric = $('#cus_metrics').val();
            var dataString = 'customMetric=' customMetric;
            //alert(dataString);
            var letterNumber = /^[0-9a-zA-Z] $/; 
            if(customMetric =='') {        
             alert("This field cannot be empty");
            }// if null ends
            else if(customMetric.length <= 3 || customMetric.length >= 20){
                alert("This field must contain atleaset more than 3 and less than 20 characters");
                return false;
            }
            else {
            $.ajax({
                method:'POST',
                url:'/metrics/addcustom',
                data:dataString,
                success:function(response){     
                if (response == 'no') {
                            //alert("success");
                           /* $("#success-alert").css("display", "block");
                            top.location.href = "/dashboard";*/
                            alert("GOT A NO");
                        }             
                        else{
                            alert("got a yes");
                        }    

                }
            }); //$.ajax ends
}
        });
</script>
  

Моя кнопка HTML указывает на файл js, я добавляю только кнопку html, поскольку мне нужна помощь только для части ajax, а сохранение и список работают отлично

 <div class="form-group">
                                        <label class="col-sm-2 control-label">Add New Custom Metrics</label>
                                        <div class="col-lg-3">
                                            <input type="text" id="cus_metrics" name="cus_metrics" class="form-control" placeholder="" />
                                        </div>
                                        <div class="col-lg-3">
                                <div style="text-align: left;width:100%;height:100%;">
                                    <button type="button" id="addbtn" style="margin-left: 28%;width: 28%;" class="btn btn-primary">Add</button>
                                </div>                                            
                                        </div>                                        
                                </div> 
  

Согласно моему ajax-коду, я отправляю идентификатор параметров в файл JS, и, как следует из запроса, я пытаюсь использовать предложение where connection.query('select custom_metrics from metrics_list where custom_metrics = ?',[customMetric], function(err, result, response) .

Я хочу отправить ответ в HTML-файл и получить ВСПЛЫВАЮЩЕЕ окно предупреждения, если файл существует, используя метод res.send, который, по-видимому, не работает. Прошу вас помочь мне с идеальным кодом, так как я застрял с этим уже целый день!!

ПОМОЩЬ приветствуется…

Комментарии:

1. var res = JSON.stringify(result); вот почему это не функция

2. ооо, спасибо.. это сработало!! Это был быстрый ответ… ПРИВЕТСТВУЮ, приятель.. Я внес изменения в свой код, и теперь он работает отлично..

Ответ №1:

мой js-код на стороне сервера с небольшой модификацией, который работает на 100%, выглядит следующим образом —

 router.post('/addcustom',function(req,res){
    try {
        /*if (req.body != null) {*/
            var customMetric = req.body.customMetric;
            //var metrics = req.body.metrics;
            var comma = ',';
            console.log("***CUSTOMMETRIC1: " JSON.stringify(customMetric)  "comma: " comma);
            // check if data exists in table start
            connection.query('select custom_metrics from metrics_list where custom_metrics = ?',[customMetric], function(err, result, response) {
                 if (err) {
                    console.log('Count Error :'   err);
                } else {
                    console.log("METRICS WHERE FOUND: " JSON.stringify(result) "ONLY RESULT :" result "****req.body.customMetric== " customMetric);
                    //var res = JSON.stringify(result);
                    console.log("RESULTS LENGTH: " result.length);
                    if(result.length > 0){                        

                       console.log("*****FOUND****");
                       res.send('yes'); 
                          return false;

                    } else {

                        console.log("NOT FOUND");

          // ********************************************
                       connection.query('SELECT COUNT(DISTINCT custom_metrics) FROM metrics_list;', function(err, result) {
                if (err) {
                    console.log('Count Error :'   err);
                } else {
                    console.log('Metrics Successfully Counted:'   JSON.stringify(result));
                   // console.log("CUSTOMMETRIC HTML req: " customMetric);
             // connection query nesting 1start
                   var id1 = JSON.stringify(result).replace(/D/g,'');
                   console.log("ID1: " id1);
                    connection.query('UPDATE metrics_list SET custom_metrics = ? WHERE id = ?', [customMetric,id1], function(err, result1) {
                    if (err) {
                      console.log('Count Error :'   err);
                    } else {
                       console.log(" Update Successfully " JSON.stringify(result1));
                      //res.redirect('/metrics/add');
                   }
                    });

                }
            }); // select distinct close

        //********************************************


                    }// else result null
                } // conn query check to validate
            }); //select custom metrics validation check query 

            //check if data exists in table end
            /*connection.query('INSERT INTO metrics_list (customMetric,metrics) values ("'   customMetric   '"'  comma  '"'   metrics  '")', function(err, result) {*/


        /*}*/
    } catch (ex) {
        console.log("Exception : "   ex);
    }
})
  

И мой Ajax —

    script type="text/javascript">
    $(document).ready(function() {

        $('#addbtn').on('click',function(){
            var customMetric = $('#cus_metrics').val();
            var dataString = 'customMetric=' customMetric;
            //alert(dataString);
            var letterNumber = /^[0-9a-zA-Z] $/; 
            if(customMetric =='') {        
             alert("This field cannot be empty");
            }// if null ends
            else if(customMetric.length <= 3 || customMetric.length >= 20){
                alert("This field must contain atleaset more than 3 and less than 20 characters");
                return false;
            }
            else {
            $.ajax({
                method:'POST',
                url:'/metrics/addcustom',
                data:dataString,
                success:function(response){     
                if (response == 'yes') {
                            //alert("success");
                           /* $("#success-alert").css("display", "block");
                            top.location.href = "/dashboard";*/
                            alert("GOT A yes");
                            return false;
                        }   else {
                            return true;
                        }  

                }
            }); //$.ajax ends
}
        });
</script>