cordova - ionic 上的 Pouchdb 和 Cordova-sqlcipher-adapter:有可能吗?
问题描述
我想知道使用离子(角度)框架的混合应用程序是否可以进行以下配置:
如果我们使用带有 pouch db 适配器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
解决方案
我回答我自己的问题以供参考。是的,只要我们不使用将类型添加到 typescript 的@types/pouchdb模块,这是可能的。
如果我们有它们,我们必须删除它并修复所有工作,而无需输入相关变量:
npm uninstall --save @types/pouchdb
我猜另一种选择是编写正确的类型并将它们包含在项目中......我没有这样做,所以我不确定。
推荐阅读
- java - 有没有办法从 Cucumber Report 中的内部代码打印值?
- compression - 如何解压缩存储在使用 zstd 压缩的 HDF5 文件中的数据?
- svg - 下载带有 fontawesome 图标的生成 svg
- java - Swagger UI 不显示对象类型的模型类字段的描述
- c# - 如何从 JSON 字符串中的字符串中删除双引号?
- windows - 这个 PowerShell 脚本是什么意思?
- hex - 将 ASCII 转换为十六进制(.scc 兼容)
- gitlab - 在自托管的 gitlab 实例中使文件夹可公开访问
- model-binding - 用于铸造模型属性的 Livewire 模型绑定
- javascript - 按名称动态调用从另一个模块导入的 javascript 函数