【问题标题】:How to alter SQL return array to a value and return to the front-end?如何将SQL返回数组改成一个值返回到前端?
【发布时间】:2026-01-14 10:00:02
【问题描述】:

我想做一个判断按钮来判断用户输入的值是否被用户使用。但是我遇到了一些问题,我想在使用 knex SQL Builder 从数据库中获取返回数据时计算值,我发现返回数据是 [{'count(Program_Codename)': 1}]。 我怎样才能得到值唯一的计数?

这是我的后端代码:

router.post('/',function(req,res){
    console.log(req.body.Program_name);
     db('program_detail').count('Program_Codename').where('Program_Codename',req.body.Program_name).asCallback(function(err,values){
        if(err){
            console.log(err);
        }else{
            console.log(values);
            if(values > 0){
                res.json({success:1});
                //console.log(req.body.Program_name);
                console.log("This Program_Codename has already been used.")
                
            }else{
                console.log("This Program_Codename can be used.")
            }
        }
        db.destroy();
     });
    
});

module.exports = router;

另外,我想把判断返回给前端网站,用ajax告诉用户结果,怎么办?

这是我的前端 ajax 代码:

  $(document).ready(function(){
      $("#checkname_btn").click(function(){
       console.log("test");
       var Program_name = { Program_name : $(':input[name=Program_Codename]').val()};
       
       $.ajax({
                data: Program_name,
                url: '/check',
                dataType: 'json',
                type:'post',
                cache: false,
                timeout: 5000,
                success: function(data){
                    var data = $.parseJSON(data);
                },
                error: function(jqXHR, textStatus, errorThrown){
                    alert('error ' + textStatus + " " + errorThrown);  
                }
            });

         //$(':input[name=Program_Codename]').next().next().after('<div id = "id" align="center">'+message+'</div>');
         //$(':input[name=Program_Codename]').focus(function(){
         //$('#id').remove();

           return false;
        });

      
   });

注释掉的代码是我想要的结果,但我不知道该怎么做。我想在评委按钮下给用户实时反馈。

顺便说一下,我可以得到前端传过来的值。

我的按钮代码:

 <td class="td-edit">Program/Codename:</td>
                            <td class="td-edit">
                                <input class="form-control-edit" type="text" name="Program_Codename">
                                <br><button class="btn btn-primary" id=checkname_btn>Check Program/Codename</button>
                            </td>

【问题讨论】:

    标签: javascript jquery node.js ajax express


    【解决方案1】:

    通过此代码获取计数:

    var count = values[0]['count(Program_Codename)'];
    

    【讨论】: