2015-07-27 20 views
12

İyonik uygulamasına $cordovaSQLite ekledim. İşte kodun temel bir örneğidir.Nesneden Veri Alınması İyonik Olmayan Çalışıyor

function retrieve() { 
var q = $q.defer(); 

var query = 'SELECT user_credentials, user_id FROM Users;'; 

$ionicPlatform.ready(function(){ 
    $cordovaSQLite.execute(db, query).then(function(res) { 
    if (res.rows.length > 0) { 
     console.log("found user"); 
     console.log(res); 
     console.log(JSON.stringify(res)); 
     q.resolve(res.rows[0]); 
    } else { 
     console.log("no rows found"); 
     q.resolve(false); 

    } 
    }, function (err) { 
    q.reject(err); 
    }); 
}); 

return q.promise; 
} 

İşte db'yi açmak için kod. iOS uygulamam veya Safari'de çalıştırırken ben günlüklerini görüntülemek zaman

if(window.cordova) { 
    // App syntax 
    db = $cordovaSQLite.openDB("CoolApp.db"); 
} else { 
    // Ionic serve syntax 
    db = window.openDatabase("CoolApp.db", "1.0", "Cool App", -1); 
} 

Chrome'da yaptığım uygulamayı test etmek

, günlüklerimde, Aldığım Ancak bu

rows: SQLResultSetRowList 
    0: Object 
    user_credentials: "asdf" 
    user_id: 234 
    length: 1 
rowsAffected: 0 

göstermek

{"rows":{"length":1},"rowsAffected":0,"insertId":1} 

Sorum şu, neden rows değerini almadım? Bu neden tarayıcıda çalışıyor, iOS'ta çalışmıyor?

+1

fakat tarayıcıda ayrıca satır sıfırı 0'dır! – tharif

+0

Offected satırları benim için ilgisiz. Önemli olan satırın içeriğidir. Yanılmadığım sürece. – jason328

+0

@ jason328 Telefonun veritabanında herhangi bir kayıt var mı? – Vidul

cevap

1

Tarayıcınız için SQLite DB yerine webSQL'yi başlatmayı denediniz mi?

Cihazınız için her zaman SQLite'ye geri dönebilirsiniz, ancak Chrome ve Firefox gibi modern tarayıcılar SQLiteyi desteklemez.

+0

Evet yaptım. Db'yi açtığımda, bir tarayıcı veya mobil cihaz kullanıp kullanmadığımı bağlı olarak açmak zorundayım. – jason328

2

Birden çok sonuç döndürülürse, ilgili dizinle rows.item yöntemini sorgulayarak sonuçları alabilirsiniz.

var elements = []; 
for (var i = 0; i < result.rows.length; i++) { 
    elements.push(result.rows.item(i)); 
} 
return elements; 

Söz konusu nesne, söz konusu nesne tamamlandığında, $ cordovaSQL tarafından döndürülen sonuçtur.