关于ionic的Pouchdb和Cordova-sqlcipher-adapter:是否可能?

时间:2018-07-11 10:54:56

标签: cordova ionic-framework pouchdb cordova-sqlite-storage sqlite-cipher

我想知道使用离子(角度)框架的混合应用程序是否甚至可以进行以下配置:

如果我们使用带有袋式数据库适配器pouchdb-adapter-cordova-sqlite的cordova-sqlite-plugin,则此方法应该有效,但不能与加密的适配器一起使用。

我面临的问题是打字稿无法翻译。我不知道如何设置环境以及使用密钥定义sqlite-cipher数据库。

下面是一些示例打字稿代码:

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import PouchDB from 'pouchdb';

import cordovaSqlitePlugin from 'pouchdb-adapter-cordova-sqlite';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})

export class HomePage {


  constructor(public navCtrl: NavController) {
    this.setUpPouch();
  }

  setUpPouch(){
    PouchDB.plugin(cordovaSqlitePlugin);
    let db = new PouchDB('dummypouch.db', { adapter: 'cordova-sqlite', key:"dummy_key"});
  }

}

我想知道是否有一种方法可以将密钥传递给PouchDB适配器,而又不会破坏转译。

导致翻译失败的行:

let db = new PouchDB('dummypouch.db', { adapter: 'cordova-sqlite', key:"dummy_key"});

打字稿转换失败并显示以下消息:

[12:35:30]  typescript: src/pages/home/home.ts, line: 21 
            Argument of type '{ adapter: string; key: string; }' is not assignable to parameter of type 
            'DatabaseConfiguration'. Object literal may only specify known properties, and 'key' does not exist in type 
            'DatabaseConfiguration'. 


      L20:    PouchDB.plugin(cordovaSqlitePlugin);
      L21:    let db = new PouchDB('dummypouch.db', { adapter: 'cordova-sqlite', key:"dummy_key"});

Error: Failed to transpile program
    at new BuildError (/Users/santi/dummy_project/dummy_push_test/node_modules/@ionic/app-scripts/dist/util/errors.js:16:28)
    at /Users/santi/dummy_project/dummy_push_test/node_modules/@ionic/app-scripts/dist/transpile.js:159:20
    at new Promise (<anonymous>)
    at transpileWorker (/Users/santi/dummy_project/dummy_push_test/node_modules/@ionic/app-scripts/dist/transpile.js:107:12)
    at Object.transpile (/Users/santi/dummy_project/dummy_push_test/node_modules/@ionic/app-scripts/dist/transpile.js:64:12)
    at /Users/santi/dummy_project/dummy_push_test/node_modules/@ionic/app-scripts/dist/build.js:109:82
[12:35:30]  copy finished in 2.47 s 

1 个答案:

答案 0 :(得分:0)

我回答自己的问题以供参考。 是的,只要我们不使用将类型添加到打字稿的@types/pouchdb模块即可。

如果有它们,我们必须删除它并修复所有问题,而无需输入相关变量:

npm uninstall --save @types/pouchdb

我想,另一种选择是编写适当的类型并将其包括在项目中...我没有这样做,所以我不确定。