重写CouchDB / PouchDB-Server

时间:2016-02-26 04:07:06

标签: couchdb pouchdb couchapp

如果可能,我将如何使用PouchDB Server实现以下网址重写?

/index.html,显示/index/_design/index/_show/index.html的HTML输出。

/my_database/index.html,显示/my_database/_design/my_database/_show/index.html

我的目标是使用PouchDB(最终CouchDB)作为独立的Web服务器。

我正在努力将rewrite documentation翻译成正常工作的代码。

1 个答案:

答案 0 :(得分:1)

Apache CouchDB使用HTTP API并且(因此)可以用作静态Web服务器 - 类似于Nginx或Apache HTTPD,但还有额外的好处,您还可以使用MapReduce视图,复制,以及构成Apache CouchDB的其他部分。

只有核心API,您可以将整个静态站点作为附件存储在单个JSON文档中,并从其自己的URL提供每个文件。如果该单个文档是_design文档,那么您将获得重写器的附加值。

这是一个示例 faux JSON文档,可以做到这一点:

{
  "_id": "_design/site",
  "_attachments": {
    "index.html": {
      "content_type": "text/html",
      "data": "..."
    },
    "images/logo.png": {
      "content_type": "image/png",
      "data": "..."
  },
  "rewrites": [
    {
      "from": "/",
      "to": "index.html"
    }
  ]
}

"data": "..."的实际值将是文件的base64编码版本。请参阅Creating Multiple Attachments中的CouchDB Docs示例。

您还可以使用CouchDB的管理UI,例如Futon或Fauxton,可在http://localhost:5984/_utils使用 - 两者都提供文件上传功能。但是,这些系统将要求首先存在JSON文档,并将PUT the attachment直接存入数据库。

完成后,您可以在CouchDB(或virtual host)中设置Cloudant条目,该条目指向该设计文档中的_rewrite端点。像这样:

[vhosts]
example.com = /example-com/_design/site/_rewrite/

如果您没有在端口80上托管,那么您需要在http://example.com:5984/处申请该网站。

只有在您希望将JSON转换为HTML(或不同的JSON,XML,CSV等)时,才需要使用_show函数(如您的示例所示)。如果您只想要静态托管,那么上面的选项非常有用。 ^ _ ^

还有很棒的工具可用于创建这些文档。 couchapp.pycouchdb-push是我最常使用的,都支持CouchApp filesystem mapping "spec"

希望有所帮助!