javascript - Node js 检查 mysql 表中是否存在数据。- TypeError : res. send 不是函数

标签 javascript jquery mysql ajax node.js

我正在尝试检查 mysql 表中是否存在数据。我收到错误 TypeError: res.send is not a function

我的 mysql 表有很多数据,但有 3 列,全部为 varchar(45) 和 id(自动增量),即 -

**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);
    } 
})

我在 html 页面中的 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 == '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代码,我将参数ID发送到JS文件,并且正如查询所示,我尝试使用where子句connection.query('select custom_metrics frommetrics_list where custom_metrics = ?', [customMetric],函数(错误,结果,响应)

我想使用 res.send 方法向 HTML 文件发送响应,如果该文件存在,则会弹出一个弹出警报框,但这显然不起作用。请求你帮助我编写完美的代码,因为我已经被这个问题困扰了一天了!

感谢帮助...

最佳答案

我的服务器端 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> 

关于javascript - Node js 检查 mysql 表中是否存在数据。- TypeError : res. send 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39821704/

相关文章:

MySQL多对多关系表使用

javascript - 排除 .module.less 的 .less 扩展文件的正则表达式

javascript - Google 跟踪代码管理器 - 有时未在自定义 Javascript 上设置

c# - 将动态生成的 javascript 保存到 html 文件中或将此内容放入字符串中并发送给 Controller

javascript - 自举开关不起作用

javascript - Jquery 淡出回调触发太快

Javascript "window.open"代码在 Internet Explorer 7 或 8 中不起作用

php - 使用 mysql_result PHP 从 MySQL 迁移到 MySQLi

mysql - 如何使用正则表达式更新表行

javascript - jquery $ 函数在 IE 中返回不同的结果