Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数据库锁定-无法开始事务_Javascript_Angularjs_Ionic Framework_Pouchdb_Web Sql - Fatal编程技术网

Javascript 数据库锁定-无法开始事务

Javascript 数据库锁定-无法开始事务,javascript,angularjs,ionic-framework,pouchdb,web-sql,Javascript,Angularjs,Ionic Framework,Pouchdb,Web Sql,我有下面的服务启动一个数据库 .service("$pouchDB", ["$rootScope", "$q", "$cordovaNetwork", function($rootScope, $q, $cordovaNetwork) { var self = this; self.db = new PouchDB(localStorage['uid'], {auto_compaction: true}); //////// //////// self.findUse

我有下面的服务启动一个数据库

.service("$pouchDB", ["$rootScope", "$q", "$cordovaNetwork", function($rootScope, $q, $cordovaNetwork) {

  var self = this;

  self.db = new PouchDB(localStorage['uid'], {auto_compaction: true});

  ////////
  ////////

  self.findUser = function(idnum) {
    return $q.when(self.db.query('filters/users'))
    .then(function(resp) {
      var found = false, found_id;
      angular.forEach(resp.rows, function(u, id) { if(u.value == idnum) { found = true; found_id = u.id; } });
      if(found) return found_id; else return false;
    })
    .catch(function(resp) { console.log(JSON.stringify(resp)); return null; })
  }

  self.get = function(id, attachment_bool) { 
    return $q.when(self.db.get(id, {attachments:attachment_bool}))
    .then(function(data) { 
        return data; 
    }); 
  }


}])
不知何故,我的数据库被锁定,当我在控制器中执行
findUser
功能时,我收到以下错误:

错误

{  
  "status":500,
  "name":"web_sql_went_bad",
  "message":"unknown",
  "error":true,
  "reason":"unable to begin transaction (5 database is locked)"
}
这是我的密码。我真的很困惑,因为这以前是有效的,没有任何问题。真正有趣的是我的
get()
函数在与数据库通信时没有给出错误

.service("$pouchDB", ["$rootScope", "$q", "$cordovaNetwork", function($rootScope, $q, $cordovaNetwork) {

  var self = this;

  self.db = new PouchDB(localStorage['uid'], {auto_compaction: true});

  ////////
  ////////

  self.findUser = function(idnum) {
    return $q.when(self.db.query('filters/users'))
    .then(function(resp) {
      var found = false, found_id;
      angular.forEach(resp.rows, function(u, id) { if(u.value == idnum) { found = true; found_id = u.id; } });
      if(found) return found_id; else return false;
    })
    .catch(function(resp) { console.log(JSON.stringify(resp)); return null; })
  }

  self.get = function(id, attachment_bool) { 
    return $q.when(self.db.get(id, {attachments:attachment_bool}))
    .then(function(data) { 
        return data; 
    }); 
  }


}])
有人知道为什么会发生这种情况吗?我可以做些什么来重新启动数据库,或者深入研究问题,这样就不会再发生这种情况了

代码

.controller('document', function($scope, $rootScope, $http, $state, $stateParams, $cordovaNetwork, $cordovaDialogs, $q, $pouchDB) {

   //THIS GIVES ME ERROR
   $q.when($pouchDB.findUser($rootScope.id)).then(function(user){
     console.log('HI');
    });

   //NO ERROR
   $q.when($pouchDB.get($stateParams.template_id, true))
   .then(function(data) {
     console.log("hello");
   });

应该注意的是当我重新启动应用程序时,我的代码工作得非常好

你在使用哪种浏览器和操作系统?@Flimzy我在模拟iOS,你可能会感兴趣……你有没有想过这个?“我们也经常遇到这样的错误。”乔纳森·诺普无法理解。我刚离开科尔多瓦,来到react native,从那以后就再也没有出现过问题