2017-10-09 4 views
0

が存在しない場合、そのレコードをPostgreSQLに挿入する方法は?

router.post('/university', function (req, res, next) { 
 
    
 
    pg.connect(connectionString,function(err,client,done) { 
 
     if(err){ 
 
      console.log("not able to get connection "+ err); 
 
      res.status(400).send(err); 
 
     } 
 

 
     client.query("select university_name from university where university_name = '"+req.body.university_name+"'",function(err,data) 
 
     { 
 
      if(data) { 
 
      res.send({message:"exist"}); 
 
       
 
      } 
 
      else 
 
      { 
 
      client.query("INSERT INTO university (_id, university_name, status) VALUES (nextval('university_id_seq'), '"+req.body.university_name+"', '"+req.body.status+"')", function(err, result) { 
 
      done(); 
 
      if(err){ 
 
       console.log(err); 
 
       res.status(400).send(err); 
 
      } 
 
      res.send({message : "successfully inserted"}); 
 
      
 
      }); 
 
      } 
 
     });

もそれが存在しない場合はPostgreSQLにレコードを挿入する方法を、すべてのエントリに 存在しない存在として、それはuniversity_name表示しますか?

+0

出力 – jcaron

+0

はいられた変更が、同じエラーをチェックし、更新されたコードを表示してください。また、** SQLインジェクション**があります。パラメータ化されたクエリを使用してください。 –

+0

で 'length' – jcaron

答えて

3

使用しているDBドライバによって異なりますが、最も一般的なのは、SELECTクエリを実行すると、DB内のレコードが存在しなくても結果データを取得できることです。通常、結果オブジェクトにはプロパティ行があり、チェックする必要があります。これに似た、あなたの場合は

if(data.rows && data.rows.length > 0){ 
    // there is data in the DB 
} else { 
    // no data in the DB 
} 
+0

出力...!!!ありがとうございます –

+0

ようこそ。さらに、INSERT ... ON CONFLICT文(通常はUPSERTと呼ばれる)についての詳細を読んで、可能なSQLインジェクションに注意してください。 – Dario

関連する問題