ng-cordova sqlite plugin: TypeError: Cannot read property 'transaction', null
Je suis en train d'obtenir les valeurs à partir de la base de données à l'aide ionique, ng-cordova, sqlite mais je reçois cette erreur:
TypeError: Cannot read property 'transaction' of null: ionic.bundle.js:19387
Voici le code:
HTML
<ion-view view-title="Search" ng-controller="AppCtrl2">
<ion-content>
<ion-list>
<ion-item ng-repeat="item in resultados">
Hello, {{item}}!
</ion-item>
</ion-list>
</ion-content>
</ion-view>
app.js
var db = null;
angular.module('starter', ['ionic', 'starter.controllers','ngCordova'])
.run(function($ionicPlatform,$cordovaSQLite) {
$ionicPlatform.ready(function() {
//Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
//for form inputs)
if (window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if (window.StatusBar) {
//org.apache.cordova.statusbar required
StatusBar.styleDefault();
}
db = $cordovaSQLite.openDB({ name: "my.db" });
$cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS people (id integer primary key, firstname text, lastname text)");
query = "INSERT INTO people (firstname, lastname) VALUES (?,?)";
$cordovaSQLite.execute(db, query, ["Sumit", "Pal"]).then(function(res) {
console.log("INSERT ID -> " + res.insertId);
});
$cordovaSQLite.execute(db, query, ["Sumti2", "Pal"]);
});
})
contrôleur
.controller('AppCtrl2', function($scope,$ionicPlatform,$cordovaSQLite) {
$ionicPlatform.ready(function() {
function getCat() {
var selectQuery = "SELECT * FROM people";
$cordovaSQLite.execute(db, selectQuery).then(function(result) {
nombres = [];
for(var i=0; i<result.rows.length; i++){
nombres.push({"nombre":result.rows.item(0).firstname});
}
})
}
$scope.resultados = getCat();
})
});
Comment puis-je résoudre ce problème ? L'erreur peut être parce que le dispositif n'est pas encore prêt ?
- J'ai eu le même problème et réussi à le résoudre: stackoverflow.com/a/31457046/2842657
Vous devez vous connecter pour publier un commentaire.
Cas vous faire tester votre application sur Navigateur/Chrome par exemple, sur les fenêtres de la Console (F12) pour être erreur de transaction, null, c'est ok!!
Pour bon test, vous devez déployer application ionique importe quel appareil android ou ios, ou émulé avd.
Regarder mon test github exemple ng-cordova sqlite SÉLECTIONNER et INSÉRER des commandes, bonne chance!
https://github.com/CharlesMendes/ionic-sqlite
https://github.com/CharlesMendes/comandos-basicos
APP.js
Déployer faire application Android
Installer apk de votre appareil/smartphone android pour test
Vous pouvez manuellement l'amorçage de l'application, une fois la plate-forme est prête
Initialiser mon angularJs après Application Phonegap deviceready
Ou vous pouvez naviguer vers un chargement statique de la page, une fois que toute la logique d'initialisation est terminée dans la plate-forme de prêt de la méthode, puis accède à la première fonctionnelles page
Faire quelques modifications.
Supprimer la connexion de base de données à partir de l'app.run(). Placer ce code dans service de l'usine
Appelez votre
getCat()
de la fonction sur l'appareil prêt.$cordovaSQLite.openDB exige maintenant un emplacement obligatoire paramètre. Changement
à
J'ai trouvé la solution pour ce faire,
il suffit de déclarer votre variable nom de la fonction dans index.js et donc il va charger la DB nom à travers le contrôleur.
JS:
Dans les Tutoriels, ils ont défini myDB au sein de la fonction