好日子,hoomans!搜索查询的NodeJS和嵌套函数
我正在与这个小型的网络应用程序与NodeJS。我在我的网页上有几个搜索功能。但我想问一些关于这个搜索功能的嵌套函数。
我的代码中实际上没有错误。目前它工作得很好,但我问这个问题的原因是我不太相信我的算法。
最初的结构是,在搜索查询的后端部分,包含对数据库的搜索查询的整个代码块写入我的routes/grades.js中的app.post()方法内部文件。另一方面,前端使用AngularJS在位于public/javascripts目录中的单独文件中编写,该目录应使用提交按钮在请求时动态重新加载表格元素。
我认为这不是一个好的算法概念,因为我想到的情况是多个用户可以访问app.post()方法,并且可能会导致某些我不知道的问题。
所以现在,我想如果我可以使用回调和超时嵌套函数。我无法用语言形容这个了明确所以我就粘贴代码
在我的路线原始代码:
路线/ grades.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);
}
});
现在,我修改了上面的routes/grades.js中的代码,使它更有意义(我认为是笑),它没有任何错误。但是,我仍然想知道哪些代码具有更好的算法,或者它们是否都有吸引力。洛尔
路线/ grades.js
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);
}
};
同时,这是我对搜索前端代码。
公共/ Java脚本/ app.js
$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);
}
}
})
}
我希望我正确表达我的问题,我真的希望你们能帮助我。
非常感谢!
请考虑发布您的问题*代码审查*。 –