ionic---数据本地存储sqlite

来源:互联网 发布:做天猫,淘宝客服怎么样 编辑:程序博客网 时间:2024/05/01 08:13

插件安装

ionic plugin add cordova-sqlite-storage

选择操作数据库的库PouchDB

  • 下载PouchDBjs库
    自行下载或者使用bower管理器下载
  • index引入PouchDBjs库
<script src="lib/pouchdb/dist/pouchdb.min.js"></script>
  • PouchDBjs中文api(百度翻译)
http://blog.csdn.net/qq_29287973/article/details/53334075

将操作数据库的方法封装成Service

.factory('appSQL', function() {    var _db;    _db = new PouchDB('appSQL', {adapter: 'websql'});    return {        initDB: function () {            _db = new PouchDB('appSQL', {adapter: 'websql'});        },        getinfo: function (id,callback) {       //获取数据库信息            _db.get(id).then(function (result) {                callback(result);            }).catch(function (err) {                callback(err);            });        },        updataInfo:function(id,data,callback){ //更新或者添加数据库信息            _db.get(id).then(function(doc) {                return _db.put({                    _id: id,                    _rev: doc._rev,                    data: data                }).then(function (response) {                    callback(response);                });            }).catch(function (err) {                if(err.status == '404'){                    _db.put({                        _id: id,                        data: data                    }).then(function (response) {                        callback(response);                    });                }            });        },        removeInfo: function (id) {             //删除数据库信息            _db.get(id).then(function(doc) {                return _db.remove(doc);            })        }    }})

appSQL服务的使用

  • 初始化(在app.js中初始化)
.run(function($ionicPlatform,appSQL,$cordovaNativeAudio) {    console.log('leason');    $ionicPlatform.ready(function() {    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard    // for form inputs)        appSQL.initDB();        .        .        .
  • 控制器中调用(将appSQL服务注入)
//更新添加数据$scope.login = function () {    var opr = 'login',        action = 'login.do ',        psw = hex_md5(hex_md5(hex_md5($scope.loginCtrl.psw))),        tel = $scope.loginCtrl.tel;    var data = {        user_name:tel,        pwd:psw    };    var sqlData = {        'user_name':tel    };    if(regularServe.tel.test(tel)){        mainServe.showLoading();        ajaxServe.pubAjax(opr,data,action,function(data){            $cordovaToast.show(data.msg, 'long', 'top');            $rootScope.loginState = true;            appSQL.updataInfo(SSID,data.ssid);      //可以不写回调            appSQL.updataInfo(PER_INFO,sqlData,function () {                mainServe.hideLoding();                $state.go('tab.index', {}, {                    reload: true                });            });        });    }else{        $cordovaToast.show('手机号格式错误!', 'long', 'top');    }}//取已经有的数据数据(判断是否登录)appSQL.getinfo(PER_INFO,function (data) {    if(data.status == '404'){        $cordovaToast.show('请先登录!', 'long', 'top');        $location.path('/tab/index/login');    }else {        if (data.data.user_name == '' || data.data.user_name == undefined) {            $cordovaToast.show('请先登录!', 'long', 'top');            $location.path('/tab/index/login');        } else {            console.log('login');            socket.init();        }    }});
0 0