2013-03-17 1 views
1

나는 웹 사이트 RSS 피드를 잡고 HTML5/Javascript sqlite를 사용하여 데이터베이스에 저장하는 웹 응용 프로그램을 개발 중입니다. HTML5 Javascript sqlite의 테이블에 데이터를 삽입하기 전에 데이터가 이미 있는지 확인하는 방법은 무엇입니까?

내 코드

function createPosts(title,author,content,contentSnippet,publishedDate,img_destaque){ 
     var oldPost = checkIfExists(publishedDate); 
     console.log(oldPost); 
     if(!oldPost){ 
      var query = "insert into mytable (titulo, data, autor, img_destaque,descricao,postagem) VALUES (?, ?, ?, ?, ?, ?);"; 
      try { 
       localDB.transaction(function(transaction){ 
        transaction.executeSql(query, [title, publishedDate, author, img_destaque, contentSnippet, content], function(transaction, results){ 
         if (!results.rowsAffected) { 
          updateStatus("Error, not data inserted"); 
         } 
         else { 
          updateStatus("Data inserted, id: " + results.insertId); 
         } 
        }, errorHandler); 
       }); 
      } 
      catch (e) { 
       updateStatus("Error: " + e + "."); 
      } 
     } 
     else{ 
      updateStatus("Error: Post already exists"); 
     } 

} 

입니다 그리고 이것은 함수 checkIfExists

function checkIfExists(publishedDate){ 
    var query = "SELECT * FROM mytable;"; 
    var returnStatus; 
    try { 
     localDB.transaction(function(transaction){ 
      transaction.executeSql(query, [], function(transaction, results){ 
       for (var i = 0; i < results.rows.length; i++) { 
        var row = results.rows.item(i); 
        if(publishedDate === row.data){ 
         console.log(publishedDate+' '+row.data); 
         returnStatus = true; 
        } 
       } 
       if(i == results.rows.length){ 
        returnStatus = false; 
       } 
      }, function(transaction, result){ 
        returnStatus = true; 
      }, function(transaction, error){ 
       updateStatus("Erro: " + error.code + "<br>Mensagem: " + error.message); 
        returnStatus = true; 
      }); 

     }); 
    } 
    catch (e) { 
     updateStatus("Error: SELECT não realizado " + e + "."); 
     returnStatus = true; 
    } 
    finally{ 
     console.log(returnStatus); 
     return returnStatus; 
    } 
} 

이다하지만 내가 localDB 볼 oldPost 항상 "정의되지 않은"내 콘솔 로깅을 반환 작동하지 않습니다. 함수는 "oldPost"변수 값을 반환 한 후 트랜잭션을 처리합니다. 어떻게 해결할 수 있습니까?

답변

2

이 콜백을 가지고보다는 자바 스크립트에서 검색을하고있는 SQL에 where 절을 사용하는 checkifExists 리팩토링에 대해 너무

function checkIfExists(publishedDate,callbacktrue,callbackfalse){ 
    var query = "SELECT * FROM mytable WHERE data=?;"; 
    try { 
     localDB.transaction(function(transaction){ 
      transaction.executeSql(query, [publishedDate], function(transaction, results){ 
       if(results.rows.length > 0){ 
        callbacktrue(); 
       } else { 
        callbackfalse(); 
       } 
      }, function(transaction, result){ 
        callbacktrue(); 
      }, function(transaction, error){ 
       updateStatus("Erro: " + error.code + "<br>Mensagem: " + error.message); 
        callbacktrue(); 
      }); 

     }); 
    } 
    catch (e) { 
     updateStatus("Error: SELECT não realizado " + e + "."); 
     callbacktrue(); 
    } 
} 
function createPosts(title,author,content,contentSnippet,publishedDate,img_destaque){ 
    checkIfExists(publishedDate,function(){ 
      updateStatus("Error: Post already exists"); 
     },function(){ 
      var query = "insert into mytable (titulo, data, autor, img_destaque,descricao,postagem) VALUES (?, ?, ?, ?, ?, ?);"; 
      try { 
       localDB.transaction(function(transaction){ 
        transaction.executeSql(query, [title, publishedDate, author, img_destaque, contentSnippet, content], function(transaction, results){ 
         if (!results.rowsAffected) { 
          updateStatus("Error, not data inserted"); 
         } 
         else { 
          updateStatus("Data inserted, id: " + results.insertId); 
         } 
        }, errorHandler); 
       }); 
      } 
      catch (e) { 
       updateStatus("Error: " + e + "."); 
      } 
    });    
} 
+0

이 솔루션이 작동합니다. 고맙습니다. – steps

0

사용 방법 :

<input type="text" name="name" class="text_cs"> 
<span class="result"></span> </br> 
Data:<span class="data-id">123,43,52,15</span> 

및 자바 스크립트 :

$('.text_cs').on('change', function(){ 
var pid = $(this).val(); 
var table = $('.data-id'); 
if(table.html().split(",").indexOf(pid) != -1) { 
    $('.result').html("ID exist"); 
} 
    else { 
     $('.result').html("Not exist"); 
    } 

});

관련 문제