私はチームを作成する必要があるプロジェクトで作業していますが、その前にそのチーム名が既に同じユーザーによって占有されているかどうかを確認する必要があります。サンプルコードは複数の信頼できるmysqlクエリをnodejsで実行する
var mysql=require('../../config/mysql_connect.js');
var dateFormat = require('dateformat');
var functions={
createTeam:function(data,cb){
this.checkifExists(data,function(err,result){
if(err)
{
cb(err);
}
else
{
if(result.length)
{
cb(null,0); // Team name exists
}
else
{
mysql.getConnectionFromPool(function(err,con){
if(err)
{
cb(err);
}
else
{
var query=con.query("Insert into team SET ? ",data,function(err,result){
if(err)
{
cb(err);
}
else
{
cb(null,result.insertId);
}
con.release();
});
}
});
}
}
});
},
checkifExists:function(data,cb){
mysql.getConnectionFromPool(function(err,con){
if(err)
{
cb(err);
}
else
{
var sql="Select id from team where user_id = ? and team_name like "+ con.escape('%'+data.team_name+'%') ;
var query=con.query(sql,[data.user_id,data.team_name],function(err,result){
if(err)
{
cb(err);
}
else
{
cb(null,result);
}
con.release();
});
console.log(query.sql);
}
});
}
};
module.exports=functions;
すべてが正常に動作しますが、そこを超える3-4のクエリで、コードが複雑になると、非管理しやすい場合がありますので、より管理しやすい方法で、この信頼性のクエリを記述するための任意の簡単な方法があります。
私はそこにもっとして3-4のクエリがあると私は二つの問題がある見ることができるように、いくつかの場合にはインデックスが
あなたの質問は困惑しています。明確にするためにそれを[編集]してください。あなたはあなたが*信頼できる*を書いた*依存*クエリを意味しますか?あなたがしようとしていることをあなたのコードから伝えるのは難しいです。ユニークなインデックスを使用してユニークなチーム名などを実施することを検討しましたか? –
テーブルにインデックスを追加したくありません.Dependableは、あるクエリの結果が他のクエリなどで使用されることを意味します。例:ここでは、一意のチーム名が存在するかどうかをチェックし、他のクエリは実行されませんでしたが、場合によっては他のクエリを実行する必要があるかもしれません。 – Vibhas
これに関する専門用語はほとんどのSQL開発者が目的に一意のインデックスを使用します。明らかに、あなたの要件はほとんどのSQL開発者の要件とは異なります。トランザクションの使用について学ぶ必要があります。 –