没有服务器端的 CouchApp 或有 xdomain 问题的 CouchDB 后端?

2023-12-23

我已经使用 CouchDB 和 CouchApp 一段时间了。我计划将它用于我正在开发的一个新网站项目。

  1. 从可扩展性的角度来看,我喜欢 CouchApp 的想法。

    缺点是,由于没有服务器端代码,有些事情(例如 oAuth 身份验证)很难在客户端完成。在某些时候,我确信我将需要一些描述性的服务器端代码 - 我想您可以查看 Node.js,但此时不希望这样做。

  2. 当您的页面由另一台服务器提供服务时,使用 CouchDB 纯粹作为后端解决方案也是一个很好的选择,但这里的缺点是跨域问题使您无法轻松使用内置的 CouchDB API。

那么有人能解决这两个缺点之一吗?

您能否以某种方式从 CouchApp 提供服务器端代码(甚至 PHP 也将是一个胜利),或者您能否以某种方式使用单独的站点来为您的页面提供服务,但克服跨域问题?

我真的试图让解决方案尽可能干净(和可扩展),CouchDB 的伟大之处之一就是超级简单、超级快速的 API,所以我真的不想在它周围使用包装器 - 除非它不这样做不妨碍性能/可扩展性。

欢迎您提出意见。


由于 CouchDB 使用基于 HTTP 的 API,因此有多种方法可以将服务器端代码(node.js、PHP 等)与 CouchApp 进行“混合和匹配”。

我将选项分为三类:

  1. 首先,您现在拥有的是 2 层架构:浏览器 + 由 CouchDB 提供服务的 CouchApp。对于只需要浏览器和 CouchDB 所能提供的功能的应用程序来说,这是一个很好的解决方案,但是当您需要发送电子邮件、调整图像大小或从另一个不需要的数据库获取数据时,您将需要另一层有一个 HTTP API(MySQL、MongoDB 等)。
  2. 接下来是 3 层架构:浏览器 + Apache/PHP(或类似堆栈)+ CouchDB。这是更“传统”的选项(即 LAMP)。这对于逐步迁移到 CouchDB 来说很好,但从长远来看,必须通过第二个 HTTP 服务器(也许作为代理)或服务器端脚本语言(例如 PHP)路由所有内容可能会变得很麻烦。
  3. 最后,也是我最喜欢的,是 2.5 层架构:浏览器 + CouchDB + 外部或 _changes 基于提要的“操作”。在这种情况下,PHP(或类似的)充当 CouchDB 的某种服务提供者。可以通过让 PHP 监视某些类型文档及其更改(即图像上传、电子邮件消息文档)的 _changes feed 来触发操作,或者可以将 CouchDB 设置为“ping”_external 处理程序以对文档进行进一步处理或其附件。这本质上就是 couchdb-lucene 的工作原理,即监视更新并在更新发生时或定期对其采取行动。

您可以在下面找到有关 _changes feed 和 _external 处理程序的更多信息:

  • _更改提要:http://guide.couchdb.org/draft/notifications.html http://guide.couchdb.org/draft/notifications.html
  • _外部处理程序:http://wiki.apache.org/couchdb/ExternalProcesses http://wiki.apache.org/couchdb/ExternalProcesses

无论其价值如何,我将在下周三讨论这三个选项PHP 和 CouchDB 网络广播 http://oreillynet.com/pub/e/1785。您的问题将为网络广播结束时的讨论提供宝贵的补充。

我很想知道您的 CouchApp 结果如何,以及您如何解决上述问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

没有服务器端的 CouchApp 或有 xdomain 问题的 CouchDB 后端? 的相关文章

  • update_sequence 更改了 cloudant 数据库中的语义?

    我使用 cloudant couchdb 我注意到数据库上的 changes 查询返回的 update sequence 不是数字 例如 437985 g1AAAADveJzLYWBgYM 更重要的是 响应不稳定 如果查询数据库 3 次 我
  • 如何在 Google AppEngine 平台上访问 Fauxton?

    我正在 Google App Engine 上创建一个离线优先的应用程序 其中 PouchDB 作为我的本地数据库 CouchDB 作为我的远程数据库 我已在 Google AppEngine 上启用了 CouchDB 并尝试访问以下 UR
  • CouchDB 的自定义 REST API?

    我一直在谷歌上搜索 试图找到例子或者直接回答我的问题 是否可以为 couchDB 创建 扩展我自己的自定义 api 端点 例如我可以创建一个 api 调用吗http 127 0 0 1 5984 database FillDatabase
  • 如何管理pouchdb和couchdb同步?

    存储多个用户数据的最佳方法是每个用户每个数据库 我正在使用同样的方法 我在服务器上有 couchdb 在移动应用程序上有 pouchdb 我通过在 pouchdb 和 couchdb 中为用户创建单独的数据库来维护每个用户数据 这意味着我在
  • 从 CouchDB 解析 JSON 时如何超越“total_rows”

    我使用以下 jQuery 代码从 CouchDB 获取 JSON 文件 Function getURL var api url http 127 0 0 1 5984 couchcontentqueue design DocCollecti
  • 创建和使用 Android 的 ContentProvider

    当我调用 Android ContentProvider 时 出现以下异常 java lang RuntimeException 无法 开始活动 ComponentInfo de harm android couchone de harm
  • CouchDb 单个文档的大小限制是多少

    我对文档存储复杂的数据结构有疑问 该数据结构可能会有所不同 文档需要完整存储和检索 需要提供文档搜索字段 我开始在 MongoBb 中存储文档 但那里的文档大小限制为 16 MB 这对我来说不够 CouchDb 允许的单个文档的最大大小是多
  • 如何控制台登录 couchdb

    首先 我真的很喜欢使用 CouchDB 可以做的所有事情 我来自很多前端 JavaScript 我使用 console log 来执行大量调试和测试任务 我想知道如何 console log 或者 CouchDB 中可能有什么更好的调试方法
  • 如何在CouchDB 2.0中创建TEXT索引?

    我正在读这篇文章https cloudant com blog mango json vs text indexes https cloudant com blog mango json vs text indexes我想在我的 Couch
  • couchdb读取身份验证

    我如何处理 couchdb 中的读取身份验证 我知道角色可以在单独的数据库中定义 但我想在文档级别实现读取身份验证 我正在考虑使用node js 但它似乎不是一个优雅的解决方案 因为couchdb也有一个http服务器 我不想再添加一个 或
  • 如何防止 CouchDB 在更新简单计数器时创建文档修订

    我想将计数器存储在 CouchDB 文档中 并在每个页面视图上递增 CouchDB 将创建本文档的完整修订版 只需 1 次计数器更新 这样会不会占用太多空间 考虑到我一天的点击量为 100 万次 我一天内可能会查看该文档的 100 万次修订
  • CouchDB 视图中的链接文档

    我很难理解 CouchDB链接文档 http wiki apache org couchdb Introduction to CouchDB views Linked documents特征 我有两个types存储在单个 CouchDB 数
  • pouchdb 从 couchdb 复制:非常慢

    我的 couchDB 中有一个约 10k 条目 约 30Mo 无附件 数据库 使用 Pouchdb 浏览器端 从沙发复制时 确实需要一段时间才能完成 令我惊讶的是我的沙发在此期间收到的请求数量 数千 我猜和文件一样多 这正常吗 有没有办法
  • 如何导入 nano (couchdb) - typescript

    我在节点应用程序中导入和使用 nano 时遇到问题 js 方式 来自文档 是 var nano require nano http localhost 5984 我该如何用打字稿做到这一点 I tried import as Nano fr
  • 对如何在 Android 上使用 CouchDB 感到困惑

    我想让 CouchDB 作为我的移动应用程序的后端运行 取代 SQlite 作为这项技术的新手 我一直感到非常困惑 因为除了去年 Couchbase 发布的所有听起来类似的产品 Couchbase Couchbase Single Serv
  • 清理 couchdb 并重新启动

    清理命令是什么CouchDB请 如果我想disable and re start我的CouchDB命令是什么 Thanks CouchDB 可以从以下位置启动 停止 重新启动 etc init d couchdb or etc rc d c
  • 如何删除带有空“”文档 ID 的 couchdb 文档?

    我在数据库中看到的文档是这样的 id rev 1 2f11e026763c10730d8b19ba5dce7565 禁止 必须提供最新的 rev以更新现有包 我在文档中看到的所有内容都显示引用带有 ID 的文档 但这当然不可能发生 我不太确
  • 为什么 CouchDB 使用仅追加 B+ 树而不是 HAMT

    我正在阅读数据结构 尤其是不可变的数据结构 例如仅追加 B 树 http guide couchdb org draft btree html用于 CouchDB 和哈希数组映射 trie http en wikipedia org wik
  • couchdb 查询带有关键参数的视图

    没有关键参数 视图可以正常工作 curl http 127 0 0 1 5984 music design albums view by release date total rows 311 offset 0 rows id a4327d
  • CouchDB 中的 UUID

    我想知道 CouchDB 中默认表示的 UUID 格式 虽然 RFC 4122 描述了 UUID 例如550e8400 e29b 11d4 a716 446655440000 CouchDB 使用连续的字符 例如3069197232055d

随机推荐

  • 如何在 AWS Lambda 中缓存多个 AWS Parameter Store 值?

    我想限制在 AWS Lambda 中调用 AWS Parameter Store 的次数 使用全局变量 我在第一次调用 Parameter Store 时缓存 Parameter Store 值 main py import os impo
  • Highcharts x 轴日期时间的最大间隔?

    我有一张每日图表 涵盖 00 00 到 23 59 但对于实时数据 假设当前是上午 9 点 默认情况下它会将图表从 00 00 拉伸到 09 00 这对我来说看起来不太好 我想要的是当天 23 59 处的 x 轴最大值 因此它将把 09 0
  • 检查文件是否正在使用 VBS

    我想制作一个小的 VBS 脚本来告诉用户文件是否正在使用 我有一个文件 如果该文件正在使用 VBS 应该给我一条消息 表明该文件正在使用 如果文件没有被任何进程使用 VBS 应该给我消息说文件没有被使用 我试过this http suppo
  • Swift - 如何关闭所有视图控制器以返回根目录

    我希望我的应用程序可以在每次用户需要时转到第一个视图控制器 所以我想创建一个函数来关闭所有视图控制器 无论它是被推入导航控制器还是以模态方式呈现或打开任何方法 我尝试了各种方法 但我未能肯定地关闭所有视图控制器 有简单的方法吗 尝试这个 s
  • 使用 Swift 3 的 FB 登录不返回任何值,并且在成功登录后不让用户返回应用程序

    我在用着iOS 10 Swift 3集成FB Login 我已遵循以下所有步骤Facebook文档 现在的问题是 成功登录后 它不会返回任何值 也不会让用户返回应用程序 注意 同样适用于Swift 2 您好 我向 facebook 开发人员
  • 针对 API 目标的计划 EventBridge 规则

    是否可以创建一个 EventBridge 规则 该规则可以安排在一天中的特定时间运行并调用 API 作为自定义目标 如果目标是 AWS 或合作伙伴服务 则似乎可以为目标设置计划 但如果它们是自定义配置的端点 则不能为目标设置计划 我想做的就
  • 服务引用错误:无法生成服务引用的代码

    我有一个 Windows 服务解决方案 并尝试在 VS2010 中添加对 Hermes 开源 ebms 消息服务器 Web 服务的服务引用 我可以使用 Web 服务的 URL 找到它 但是当我尝试填充服务引用时 我在 Visual Stud
  • SQL Server 中 BIT 字段比 int 字段快吗?

    我有一些字段的表 其值将为 1 0 随着时间的推移 该表将变得非常大 使用位数据类型好还是使用不同类型来提高性能更好 当然 所有字段都应该建立索引 我无法为您提供任何有关性能的统计数据 但是 您应该始终使用最能代表您的数据的类型 如果您想要
  • Angular 2 - 路由 - CanActivate 与 Observable 配合使用

    我有一个验证卫士 用于路由 实现可以激活 canActivate return this loginService isLoggedIn 我的问题是 CanActivate result 取决于 http get result 登录服务返回
  • 使用 R 的 Plumber - 创建 GET 端点来托管 CSV 格式的数据而不是 JSON

    我认为这是 R 管道工库的一个很好的快速演示 但主要是我正在努力以 csv 格式提供数据 我正在使用 R 的管道工包来托管我的一些体育数据的 API 端点 目前 我有一些数据可以获取我正在尝试提供的 MLB 棒球队的获胜总数 使用水管工 我
  • Python matplotlib 错误栏问题

    给定这些 numpy 数组 x 0 1 2 3 4 5 6 7 8 9 y 0 0 02083473 0 08819923 0 9454764 0 80604627 0 82189822 0 73613942 0 64519742 0 56
  • 应用程序未安装错误

    我为我的 Nexus 7 创建了一个未签名的 apk 当我尝试安装它时 设备会弹出 应用程序未安装 在 Eclipse 模拟器中一切正常 我尝试将目标更改为 4 2 4 3 4 4 同样 所有工作都在模拟器中进行 但不在设备上进行 设备运行
  • 通过循环依赖从 Jersey 获取 JSON

    我正在编写一个使用 Jersey 和 JAXB 的服务 我的类使用 XMLRootElement XMLElement 等进行注释 我在两个类之间存在循环依赖关系 因此我使用 XMLTransient 注释了循环依赖属性 因此 当我调用我的
  • 如何在登录时通过 JWT 令牌从 Azure Active Directory 传递自定义扩展属性?

    我在 Azure Active Directory 中有自定义扩展属性 通过 Azure AD Connect 映射 Azure AD 上的扩展属性采用以下形式extension
  • 使用 H2 控制台访问 mem 或 fs 数据库表

    我正在尝试访问 Play 中应用程序的表格 框架 但我无法使用控制台找到它 例如 我有两个实体模型 Address and Campus 我可以正常创建对象并保存 但我想查看 fs 或 mem DB 中的更改 但 H2 控制台不显示表Add
  • 如何获取反应传单地图的边框并检查地图内的标记?

    我的代码在这里 import React useState useEffect useRef from react import restaurantsInfo from RestaurantsList json import App cs
  • 如何将对象数组转换为一个特定对象?

    所以 我在上次面试中完成了一项很小但对我来说很难的任务 我只是重新设置了如何解决它 我认为我们需要在这个任务中实现递归 但我不清楚 任务 let arr name width value 300 name height value 100
  • 合并 pandas DataFrame 时如何保留列 MultiIndex 值

    我有两个 pandas DataFrame 如下所示 df1 pd DataFrame Q1 SubQ1 1 2 3 Q1 SubQ2 1 2 3 Q2 SubQ1 1 2 3 df1 ID a b c df2 pd DataFrame i
  • Dispose() 和 Ninject 指南

    因此 我有一个从 WCF 服务公开的方法 如下所示 public GetAllCommentsResponse GetAllComments GetAllCommentsRequest request var response new Ge
  • 没有服务器端的 CouchApp 或有 xdomain 问题的 CouchDB 后端?

    我已经使用 CouchDB 和 CouchApp 一段时间了 我计划将它用于我正在开发的一个新网站项目 从可扩展性的角度来看 我喜欢 CouchApp 的想法 缺点是 由于没有服务器端代码 有些事情 例如 oAuth 身份验证 很难在客户端