私は、XML経由でAjax呼び出しからニュースデータを取得する小さなPhonegapアプリケーションを作成しました。これは正常に動作しますが、データベーステーブルにデータを保存して、オフラインでニュースを読むこともできます。ループを使用してsqliteデータベースに行を追加する(Phonegap)
Ajaxコールバックがデータをループするときに、グローバルニュースオブジェクトを埋め込み、データがデータベースに既に格納されているかどうかを確認する関数を呼び出します。そうでない場合は、データベースのニューステーブルに挿入する必要があります。
問題は私のニュースオブジェクトはもう存在しないように私がメッセージを取得するためのテーブルでニュースを格納するためのトランザクションで、それが思われることである:
Uncaught TypeError: Cannot read property 'title' of undefined in ...
それでは、どのように私はそれを確認することができますこの作品?ここで私はニュースを選択して、それが既に存在だかどうかを確認したい部分のコードは次のとおりです。
// Check if a news from the internet already exists in the database; If not, insert it
function checkNewsInDB(){
db.transaction(function(tx){
tx.executeSql("SELECT * FROM NEWS", [], checkSuccess, dbErrorCB);
}, dbErrorCB, dbSuccessCB);
}
// Result Callback from the News Check
function checkSuccess(ctx, result){
var len = result.rows.length;
var found = false;
for(var n = 0; n < newsContainer.length; n++){
for(var r = 0; r < len; r++){
if(result.rows.item(r).n_title == newsContainer[n].title
&& result.rows.item(r).n_pubdate == newsContainer[n].pubdate){
found = r;
}
}
if(found == false){
db.transaction(function(tx){
tx.executeSql("INSERT INTO NEWS (n_title, n_link, n_creator, n_pubdate, n_description) VALUES (?,?,?,?,?)", [newsContainer[n].title, newsContainer[n].link, newsContainer[n].creator, newsContainer[n].pubdate, newsContainer[n].description], insertSuccess, dbErrorCB);
}, dbErrorCB, dbSuccessCB);
} else {
found = false;
}
}
}
newsContainerが、私はそれをチェックして、データの数行で満たされています。誰かがなぜこれがうまくいかないのか理解できるように助けてくれたら、とても嬉しいです。
ありがとうございます!
挨拶、
ベルント
あなたはサンプルコードを送信してください。私はまだそれを理解することはできませんか? –