我们CouchDB在生产中使用过,主要是在受控环境中构建应用程序.大多数情况下,我们使用中间件库进行直接调用couchdb/cloudant,从而避免直接(前端JavaScript调用直接进入CouchDB/Cloudant).
出于安全原因,很明显,对于经过身份验证的CouchDB数据库:http://{username}:{password}@IPAddress:Port/DB
或者对于cloudant:,https://{username}:{password}@username.cloudant.com/DB如果直接通过JavaScript进行调用,则今天浏览器中的开发人员工具可以使人员实现此调用,从而可以完全访问您的数据库.
在中间件处理时,附件通常很痛苦.有利的是使云量处理附件的高速缓存和服务直接到前端,从而减轻了我们的中间件.但是,在网络上和庞大的受众群体中,直接调用我们的云端环境非常棘手.
我们首先为所有附件都设置了一个单独的cloudant帐户,这样inquisitive boy就不会篡改我们用户的实际元数据或信息.因此,他们可以访问的唯一cloudant帐户是附件,因为我们正在对我们的数据库进行直接的JavaScript调用.
问题:我们如何找到隐藏云环境的用户名和密码的方式,从而允许我们安全地对云端进行直接JavaScript调用?我们的基础架构完全在云端,因此我们没有代理和东西可以使用.我们听说过Url缩短服务,CDN等,但我们还没有找到一个非常确定的解决方案.
我正在使用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落入同一个篮子?)"目前不使用任何索引".
谢谢!
我有以下文件:
{ _id: "123", type: "project", worksite_id: "worksite_1" }
{ _id: "456", type: "document", project_id: "123" }
{ _id: "789", type: "signature", document_id: "456" }
Run Code Online (Sandbox Code Playgroud)
我的目标是运行查询,并且不可避免地对所有与之连接的文档进行过滤复制worksite_id: worksite_1.
例:
如果我想要来自该工地的所有内容,我应该能够检索所有这些文档.
通常我会添加一个worksite_id给我type:document和type:signature.但是,由于各种原因,工地可能会在项目中发生变化.
我想知道是否有办法创建索引或做一些我不想要显示这些相似之处的东西.
这感觉就像它在正确的道路上,但解释将文档放在其他文档中,我只是想让它们分开.
任何帮助,将不胜感激.
在过去的几个月里,我们已经收取了许多我们在Cloudant上没有预料到的HTTP请求.通过在本地查看CouchDB控制台,我发现每次连续复制时,每隔5秒钟就会发出一次GET请求.
我已经停止了在Futon中可以找到的所有连续复制,并且我对我们拥有的每个Cloudant帐户都做了相同的操作.通过查看Cloudant的仪表板,我看到GET请求减少了(数千个),但没有达到合理的水平.所以必须有一些连续的复制,但我找不到它们.
如何找到并停止剩余的复制?
在 Cloudant 或 CouchDB 的索引中使用 Skip 参数是否存在潜在的性能损失?有更好的技术可以使用吗?
我有一个使用Cloudant Bluemix服务的IBM Bluemix应用程序.有时对Cloudant的调用很慢(几秒钟),一分钟之后,同一个调用是亚秒级.我们并没有太努力,但是,我认为我会考虑复制,看看是否会产生性能差异.文档清楚地说明了如何创建副本,但是没有关于如何使用复制的文档.
我不确定是否因为我们通过Bluemix获得的Cloudant功能有限?或者是什么,但是cloudant doc谈到了,例如: - 用户连接到最近的副本 - 如果副本关闭,用户将被定向到另一个源:https://cloudant.com/product/cloudant-features/replication /
使用Bluemix帐户中的Cloudant,我可以创建一个副本(从DB_A到B,反之亦然).但现在呢?
我猜我现在应该分配负载,否则上述好处将不适用(即我不知道最接近的副本,我认为我不必编写代码来检测和中断和重定向对不同的副本,对吗?).
我正在寻找有关如何使用复制来减轻负载以查看是否有助于提高性能的指导.
丹,谢谢你
我已经阅读了关于这个主题的大约 10 个相关的 stackoverflow 问题,它们都分散在一个类似的问题上......我想围绕一个虚构的“todo”应用程序简化我的问题。我正在学习编码 (javascript),但遇到了障碍。我让我学习的“激情”项目非常复杂,解决了个人旅行问题。我希望有一天我能回报!
这是虚构的应用程序:
这个应用程序将使用 Ionic 2 构建。离线第一个应用程序将让用户登录并创建他们自己的“待办事项”列表。这些应该可以通过他们的手机和桌面访问并同步。用户还应该能够与社区共享他们的待办事项列表,社区可以复制其他人的“待办事项”列表。该应用程序还应该能够查询用户最喜欢做什么,例如“刷牙”或“查看我的蝙蝠侠收藏”。用户还应该能够使用任何社交网络登录(Facebook、Twitter、谷歌等)。
1) 你如何构建 pouchdb/couchdb 数据库?对沙发底座/云台开放。
它是每个用户的数据库吗?是每个角色的数据库吗?它是一个适合所有人的数据库吗(我知道这存在安全问题)?
2) 假设您将每个客户端 pouchdb 数据库合并到一个大型数据库中进行查询是否正确?
3) 你必须使用 NodeJS 后端或服务器吗?
4) 可以使用 Auth0 或 Stormpath 进行身份验证吗?
我已经研究了大约 5 天,但我无法弄清楚。我真的很感谢所有的帮助。
编辑:我认为这很好地解释了除了我认为可以与 Bluemix 一起使用的身份验证之外我还需要什么?
https://cloudant.com/blog/replication-with-cloudant-pt-3/#.V38hxpMrJE6
想法?
我想检索除设计文档之外的所有文档,但_all_docs返回数据库中的所有文档。从答案中,我发现使用两个查询就会给出结果。
_all_docs?endkey="_"- 列出直到第一个设计文档的文档_all_docs?startkey="design_\uffff"- 在设计文档之后列出文档如果遵循设计文档的文档具有 _id“``test”,则此操作不起作用。它给出了以小写字母开头的文档_id。
的 ASCII_为 95,反引号的 ASCII 为 96。小写字母以 97 开头。
那么上面的查询是否可以修改为:
_all_docs?startkey="`"
Run Code Online (Sandbox Code Playgroud) 我正在建立一个典型的分页,允许用户点击特定的页码并查看结果(类似于谷歌搜索结果视图).我正在使用cloudant搜索API.cloudant搜索API提供限制选项但不提供跳过选项.如果用户在第1页上并点击第4页,我该如何跳过n个结果?
我可以看到分页是使用书签实现的.这是否意味着我需要首先通过向搜索API发送3个额外的请求来获取第4页的书签?
cloudant ×10
couchdb ×9
nosql ×3
pouchdb ×3
ibm-cloud ×2
couchdb-2.0 ×1
javascript ×1
performance ×1
search ×1