もう一度、hoomans!検索クエリのNodeJSおよび入れ子関数
私はNodeJSでこの小さなWebアプリケーションを使用しています。私は私のウェブページにいくつかの検索機能を持っています。しかし、この検索機能に関してネストされた機能について何か質問したいと思います。
私のコードには実際にエラーはありません。今はかなりうまく動いていますが、私がこれを求めているのは私のアルゴリズムを信頼していないからです。
元々、検索クエリのバックエンド部分では、データベースへの検索クエリを含むコードブロック全体が、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);
}
});
を、Iを上記の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);
}
};
一方、これは、検索のための私のフロントエンドコードです。
公開/ JavaScriptの/
$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.js私は正しく私の問題を表現願っていますし、私は本当にあなたたちは私を助けることができると思います。
多くの感謝!
*コードレビュー*にご質問を投稿してください。 –