Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于搜索查询的NodeJS和嵌套函数_Javascript_Angularjs_Node.js - Fatal编程技术网

Javascript 用于搜索查询的NodeJS和嵌套函数

Javascript 用于搜索查询的NodeJS和嵌套函数,javascript,angularjs,node.js,Javascript,Angularjs,Node.js,再见,胡曼斯 我正在使用这个带有NodeJS的小型web应用程序。我的网页上有一些搜索功能。但是我想问一些关于这个搜索功能的嵌套函数的问题 我的代码中实际上没有错误。现在它运行得很好,但我问这个问题的原因是我不太相信我的算法 最初的结构是,在搜索查询的后端部分,包括对数据库的搜索查询在内的整个代码块都写在我的routes/grades.js文件中的app.post()方法中。另一方面,前端用AngularJS写入位于public/javascripts目录中的单独文件中,该文件应使用提交按钮在请

再见,胡曼斯

我正在使用这个带有NodeJS的小型web应用程序。我的网页上有一些搜索功能。但是我想问一些关于这个搜索功能的嵌套函数的问题

我的代码中实际上没有错误。现在它运行得很好,但我问这个问题的原因是我不太相信我的算法

最初的结构是,在搜索查询的后端部分,包括对数据库的搜索查询在内的整个代码块都写在我的routes/grades.js文件中的app.post()方法中。另一方面,前端用AngularJS写入位于public/javascripts目录中的单独文件中,该文件应使用提交按钮在请求时动态重新加载表元素

我认为这不是一个好的算法概念,因为我正在考虑一个场景,在这个场景中,多个用户将访问app.post()方法,可能会导致一些我不知道的问题

现在,我在考虑是否可以使用带有回调和超时的嵌套函数。我无法再清楚地描述这一点,所以我将只粘贴代码

我的路线中的原始代码:

路线/等级.js

app.post('/grades', function(req, res, next){
    setTimeout(callback, 100);
    try{
        var reqObj = req.body;
        console.log("Request Object: " + reqObj["className"]);
        req.getConnection(function(err, conn){
            if(err){
                console.error('SQL Connection error: ', err);
                return next(err);
            }
            else{
                var insertSql = "SELECT Class_Name,Class_Code,Class_Instructor FROM classes WHERE Class_Name LIKE ?";
                var insertValues = [
                    '%' + reqObj["className"] + '%'
                ];
                var query = conn.query(insertSql, insertValues, function(err, result){
                    if(err){
                        console.error('SQL error: ', err);
                        return next(err);
                    }
                    var class_array = [];
                    for(var i=0; i<result.length; i++){
                        class_array.push(result[i]);
                    }
                    console.log(class_array.valueOf());
                    res.send([{
                        info:
                            class_array.valueOf()
                    }])
                });
            }
        });
    }
    catch(ex){
        console.err("Internal error: " + ex);
        return next(ex);
    }
});
router.post('/grades', function(req, res, next){
    searchForClass(req, res, next, function(){
       console.log("Class Search Success");
    });
});

function searchForClass(req, res, next, callback){
    setTimeout(callback, 100);
    try{
        var reqObj = req.body;
        console.log("Request Object: " + reqObj["className"]);
        req.getConnection(function(err, conn){
            if(err){
                console.error('SQL Connection error: ', err);
                return next(err);
            }
            else{
                var insertSql = "SELECT Class_Name,Class_Code,Class_Instructor FROM classes WHERE Class_Name LIKE ?";
                var insertValues = [
                    '%' + reqObj["className"] + '%'
                ];
                var query = conn.query(insertSql, insertValues, function(err, result){
                    if(err){
                        console.error('SQL error: ', err);
                        return next(err);
                    }
                    var class_array = [];
                    for(var i=0; i<result.length; i++){
                        class_array.push(result[i]);
                    }
                    console.log(class_array.valueOf());
                    res.send([{
                        info:
                            class_array.valueOf()
                    }])
                });
            }
        });
    }
    catch(ex){
        console.err("Internal error: " + ex);
        return next(ex);
    }
};
$scope.classFun = function(){
        console.log('clicked submit');
        $http({
            url: 'http://localhost:3000/grades',
            method: 'POST',
            data: $scope.data
        }).then(function (httpResponse){
            console.log('response', httpResponse);
            // console.log(Object.keys(httpResponse.data[0].info[0]).length);
            var tbody = document.getElementById("class_list_data");
            while(tbody.firstElementChild){
                tbody.removeChild(tbody.firstChild);
            }
            for(var i=0; i<httpResponse.data.length; i++){
                for(var j=0; j<httpResponse.data[i].info.length; j++){
                    var tr = document.createElement("tr");
                    var td = document.createElement("td");
                    td.appendChild(document.createTextNode(httpResponse.data[i].info[j].Class_Name.toString()));
                    tr.appendChild(td);
                    tbody.appendChild(tr);
                }
            }
        })
    }
app.post('/grades',函数(req,res,next){
设置超时(回调,100);
试一试{
var reqObj=请求主体;
log(“请求对象:+reqObj[“className”]);
请求获取连接(功能(错误,连接){
如果(错误){
console.error('SQL连接错误:',err);
返回下一个(错误);
}
否则{
var insertSql=“从类名称类似的类中选择类名称、类代码、类讲师?”;
var insertValues=[
“%”+reqObj[“类名称”]+'%”
];
var query=conn.query(insertSql、insertValues、函数(err、result){
如果(错误){
console.error('SQL error:',err);
返回下一个(错误);
}
var class_数组=[];

对于(var i=0;i代码中只有一个问题,我认为您不需要回调函数,因为它没有给出任何有用的含义

setTimeout(callback, 100); //it fires the callback after 100ms no matter what
您不必担心多个客户端请求,因为每个请求将在不同的范围内运行


就性能而言,当表变大且索引不正确时,使用带有“LIKE”关键字的MySQL字符串搜索速度非常慢。

代码中只有一个问题,我认为您不需要回调函数,因为它没有任何有用的意义

setTimeout(callback, 100); //it fires the callback after 100ms no matter what
您不必担心多个客户端请求,因为每个请求将在不同的范围内运行


在性能方面,使用带有“LIKE”的MySQL字符串搜索当表变大而索引不正确时,关键字非常慢。

请考虑将问题提交给代码审查。请考虑将问题提交到代码审查。OW OK。这意味着原始代码工作正常?基本上是相同的。OK。我在NoDJS中读到了这个多请求,我想。适用于此算法…无论如何,非常感谢。现在我知道我的原始代码没有任何错误。(除了你提到的“LIKE”键).我会解决它的。谢谢!干杯!哦,好吧。这意味着原始代码工作得很好?基本上它们是一样的。哦,好吧。我在nodeJS中读到了这个多重请求,我认为它适用于这个算法…无论如何,非常感谢。现在我知道我的原始代码没有任何错误。(除了“喜欢”之外)你提到的钥匙)。我会解决的。谢谢!干杯!