나는 웹 사이트 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"변수 값을 반환 한 후 트랜잭션을 처리합니다. 어떻게 해결할 수 있습니까?
이 솔루션이 작동합니다. 고맙습니다. – steps