gpt4 book ai didi

android - 在 ionic 应用程序中创建远程 couchdb 数据库

转载 作者:行者123 更新时间:2023-11-29 01:04:14 25 4
gpt4 key购买 nike

我正在构建一个 ionic 3 应用程序,我正在使用 PouchDB 和 CouchDB 进行同步。为了创建远程数据库,我使用了 official documentation 中推荐的 db.info() 命令。 :

note: The remote database will not be created until you do an API call, e.g.: db.info(). The reason behind that is that the PouchDB constructor is completely synchronous, for ease of error handling (i.e. no asynchronous errors).

这是我在我的应用程序中使用的代码:

let remotex = new PouchDB('https://' + auth + '@' + 'xxx.xx:6984/' + xx + '_xx');
return remotex
.info()
.then((res) => {
console.log(res);
return res;
})
.catch(function(err) {
console.log('error : ', err);
return err;
});

这工作正常;当我在 Debug模式下构建我的应用程序时,远程数据库已创建并且同步工作正常:

ionic cordova build android --prod --buildConfig

但是,在发布版本中不会创建远程数据库:

ionic cordova build android --prod --release --buildConfig

.info() 方法返回:

{"status":0, "name":"unknown"}

命令“.info()”只能在 Debug模式下工作吗?是否有任何其他方法来创建远程数据库并使同步工作?

谢谢。

最佳答案

原来是我在CouchDB服务器上配置的SSL证书相关的问题。该证书是自签名的,因此当应用程序处于 Debug模式时,cordova 构建过程会使其忽略无效证书生成的错误。但是 Release模式不是这样。

所以我修改了应用程序在 Release模式下的构建方式,以允许它发出“不安全”的请求。在为 Android 构建应用程序时,我更改了文件SystemWebViewClient.java 位于 project/platforms/android/CordovaLib/src/org/apache/cordova/engine/ 这样:

         if ((appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
// debug = true
handler.proceed();
return;
} else {
// debug = false => comment this
//super.onReceivedSslError(view, handler, error); => comment this

handler.proceed(); // added this
return;
}

这只是一种解决方法,不应在生产模式下使用。我找到了这个解决方案 here .

关于android - 在 ionic 应用程序中创建远程 couchdb 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48638485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com