我有一个应用程序,其中包含对用户敏感的信息.据我所知,我应该使用每个用户架构的数据库.我希望每个用户的数据库(可能是客户端)复制到位于公共服务器上的数据库,并允许用户从任何设备访问应用程序,以便用户登录设备,数据库将被某些人发现公共服务器上的中间层,然后复制客户端,并在设备和公共服务器之间进行同步.
看起来这是CouchDB的好处(基于我的Google搜索),但有没有任何示例应用程序可以完成我描述的(或接近它)?我正在使用couchdb 1.1.0.
让我们假设我们在PouchDB中存储表示为JSON对象的汽车(大约40MB),我们希望根据马力属性进行搜索.sql中的示例:select*from HP> 100的汽车.
您可以按键查询pouchDB,但显然HP不是文档的关键.有没有办法可以做到这一点?
据我了解地图功能,
function(doc) {
if(doc.value) {
emit(doc.value, null);
}
}
Run Code Online (Sandbox Code Playgroud)
无法访问函数外部范围内的任何变量.
var horsePower = $scope.horsePowerInputField
function(doc) {
if(doc.hp > horsePower) {
emit(doc.value, null);
}
}
Run Code Online (Sandbox Code Playgroud)
那么有可能查询数据库,基于非关键变量进行参数化吗?
我在CouchDB中将〜2500个图像作为附件存储在同一个文档中.这些图像在硬盘驱动器中占据大约15MB,因此CouchDB大约为17MB.
当我通过PouchDB将此文档推送到我的客户端时,我看到结果数据库超过40 MB.我按照以下步骤进行了一些测试:
将X图像附件上传到CouchDB文档.
紧凑型CouchDB
完全清除客户端缓存
重新加载客户端(在我的应用程序中,我在重新加载时复制数据).
这是结果:
number of attached files | Total size (KB) in HD | Inc | Size in Indexed DB | Inc
17 129 207
27 168.2 39.2 267 60
37 219.6 51.4 335 68
47 275.5 55.9 414 79
57 327.7 52.2 493 79
67 384.9 57.2 579 86
77 428.5 43.6 654 75
Run Code Online (Sandbox Code Playgroud)
所以,似乎:
PouchDB为每个附件增加了大约2K的控制数据.
添加更多附件时,此控制数据会增加.(1.6K - > 2.3K - > 2.6K - > 2.8K ......)
图像在CouchDB和PouchDB中都有content_type:image/png.我明白这应该防止将它们存储为base64.我对么?
有人见过这个吗?有没有人能够解决它?当针对iOS 50MB空间限制内的应用程序进行调整时,这是一个大问题.
编辑
我继续检查pouchDB中的一些图像与原始文件的大小:
文件1:orig大小= 7.4K/PouchDB大小= …
如何确保当前用户有权通过PouchDB访问CouchDB数据库?从我的实验中,使用CouchDB数据库名称调用新的PouchDB()方法可以授予您访问该数据的权限.
在Futon中将require_valid_user设置为true似乎有效,但在通过POST/_session对用户进行身份验证后,仍然会弹出Futon模式窗口.我希望有一个标准的登录界面(用户名和密码),将用户登录到我的应用程序并授予访问正确的CouchDB数据库的权限(通过PouchDB).我可以这样做吗?任何帮助将不胜感激.
我正在使用离子框架开发一个应用程序,它将从使用laravel构建的API中获取一些数据,将其保存在数据库中,这样当用户离线时他可以继续使用该应用程序,我做了一些研究互联网,发现了一个名为pouchDB的插件,它是否适用于我需要的产品?最好的方法是什么?
我在服务器端的客户端(离子移动应用程序)couchdb使用pouchdb.
我需要在pouchdb成功创建并与couchdb同步后执行操作.
所以我怎么能等到pouchdb完成初始活动.然后才开始我的客户端执行.
目前pouch正在以异步方式工作所以在pouch初始化我的应用程序之前的某个时候开始执行并且我收到pouchdb的错误.
我从couchDB数据库复制数据时收到"数据库遇到未知错误"消息.它开始复制,下载一些文档,然后在复制一些文档后失败.我无法得到确切的问题为什么会发生这种情况.
CustomPouchError {status:500,name:"unknown_error",消息:"数据库遇到未知错误",错误:true,结果:Object}
我正在使用CouchDB 2.0实例上的Mango查询,通过梦幻般的pouchdb-find.
有几次,我得到了可怕的no matching index found, create an index to optimize query time,即使我警告是使用索引字段.
刚才我在选择"type": {"$in": ["a", "b"]}或等效时得到它"$or": [{"type": "a"}, {"type": "b"}],即使索引type存在.
谷歌搜索(cloudant查询文档,pouchdb-find文档,SO问题)没有帮助,在后者@nlawson说有些谓词($ne在上述问题,但也许我$in/ $or落入同一个篮子?)"目前不使用任何索引".
谢谢!
我和pouchdb一起工作了3个月了.在过去的两个月里,一切都在工作,直到这个八月,pouchdb检查员不再显示关于fauxton ui的数据(这就是我认为的所谓)并且只显示微调器图标.我决定卸载该插件并重新安装它只是为了发现它在Chrome商店中不再可用.我尝试使用另一台仍然安装了pouchDB的PC,它也显示了相同的微调器图标(不显示任何数据).我在网上搜索任何新闻,但一无所获.甚至从https://pouchdb.com/guides/databases.html到下载插件的链接也不再有用.有人可以实际验证这一点吗?
我正在努力理解这个错误:Uncaught TypeError: PouchDB is not a constructor
代码如下:
var PouchDB = require("pouchdb");
var db = new PouchDB("scr");
Run Code Online (Sandbox Code Playgroud)
我已经阅读了它如何与类型相关并添加:
"@types/node": "^10.12.0",
"@types/pouchdb": "^6.3.2",
Run Code Online (Sandbox Code Playgroud)
到我的 package.json 应该有帮助,但事实并非如此。我已经在另一个简单的 .js 文件上进行了测试并且可以正常工作,但在我的主应用程序上却不是。不过,我不明白为什么它不起作用。小袋文档非常清楚https://pouchdb.com/api.html#create_document。
我应该提到我在电子应用程序的上下文中运行它,而不是在浏览器中。
我在这一点上感到困惑,任何帮助将不胜感激。干杯!