2014-12-02 67 views
0

我使用离子和angularjs的凭据验证工作,我想要的是当用户已经登录然后去成员页面,当有请求http后/ get/else我想添加http头部请求,我是成功的,如果不使用SQLite,但当我改变我的代码使用SQLite(ngCordova插件)我得到错误。它在我的Xcode日志中没有任何信息返回空白。 这里的代码sqlite ngCordova使用离子返回空白

//app.js

'use strict'; 

var db = null; 
angular.module('logiseraApp', ['ionic','ngCordova']) 
.run(function($ionicPlatform, $cordovaSQLite) { 

    $ionicPlatform.ready(function() { 
    //SQLite database 
    db = $cordovaSQLite.openDB("my.db", 1); 
    //create tables 
    db.transaction(function(tx) { 
     //create session table 
     tx.executeSql('CREATE TABLE IF NOT EXISTS session (id integer primary key, name varchar(50), value text)'); 

     }, function(e) { 
     console.log("ERROR: " + e.message); 
    }); 
    }); 
}) 

//this is my focus error 
//i check if session is not empty 
//and fetch user data then store to config.headers 
//there is no error if i"m not using sqlite 
.factory('authInterceptor', function($location, $q, $cordovaSQLite) { 
    return { 
    request: function(config) { 
     config.headers = config.headers || {}; 

     var query = "SELECT value from session where name = ? limit 1"; 
     $cordovaSQLite.execute(db, query, ["userdata"]).then(function(res) { 
      if(res.rows.length > 0){ 
       console.log("result length", res.rows.length); 
       var userdata = JSON.parse(res.rows.item(0).value); 
       //apache 
       //config.headers.token_user_id = userdata.user_id; 
       //nginx 
       config.headers['Token-User-Id'] = userdata.user_id; 
      } 
     }, function (err) { 
      console.error(err); 
     }); 

     return config; 
    } 
    }; 
}) 

.config(function($stateProvider, $urlRouterProvider, $httpProvider) { 
    $httpProvider.interceptors.push('authInterceptor'); 
}); 

谢谢

回答

0

尝试用不同的sqlite的语句,其中整数,关键,VARCHAR(50)和文本类型有不同的尝试比如删除:

tx.executeSql('CREATE TABLE IF NOT EXISTS session (id, name, value)'); 

整数和文本类型应该是一个问题,但VARCHAR不是东东在使用文本类型时使用。这应该至少创建一个表,如果它还不存在。

我工作的一个科尔多瓦的项目,我们使用SQLite太多,但在我们的sqlite的语句仅独特被用于代理键。我们使用这个plugin,所有的数据,如浮点数或字符串,都根据它们的原始类型进行保存。