我正在构建我的第一个CouchApp(一个简单的博客引擎),以便了解它的更多信息。现在,我让它工作到以下URL返回博客帖子:
http://127.0.0.1:5984/couchblog/_design/couchblog/_list/index/posts
我有一个名为posts
的视图可以返回我的帖子,还有一个名为index
的列表可以呈现帖子。所以我认为我的下一步是将URL重写为更友好的东西。不幸的是,the documentation on URL rewriting似乎有点模糊,我似乎无法开始工作。
我的设计文档的重写部分如下所示:
rewrites: [{
from: '../../../',
to: '/_list/index/posts',
method: 'GET',
query: ''
}],
我想重写它以便它提供来自网络服务器根目录的博客文章列表,但我似乎无法随时随地使用它。谁能看到我做错了什么?我通过Homebrew在OS X Snow Leopard上使用CouchDB 1.6.0。
答案 0 :(得分:2)
我想重写一下,以便它提供来自网络服务器根目录的博客文章列表
我认为你需要在couchdb配置中配置你的vhosts设置。这在vhosts section中已经很好地介绍了,所以我将在这里发布相关部分: -
要添加虚拟主机,请为您的域名添加一个CNAME指针到DNS。对于开发和测试,在hosts文件中添加一个条目就足够了,通常是类Unix操作系统上的/ etc / hosts`:
# CouchDB vhost definitions, refer to local.ini for further details
127.0.0.1 couchdb.local
测试这是否有效:
$ ping couchdb.local
PING couchdb.local (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.025 ms
64 bytes from localhost (127.0.0.1): icmp_req=2 ttl=64 time=0.051 ms
最后,在[vhosts] *部分的配置文件中添加一个条目:
[vhosts]
couchdb.local:5984 = /example
*.couchdb.local:5984 = /example
如果您的CouchDB正在侦听默认HTTP端口(80),或者位于代理后面,那么您无需在vhost密钥中指定端口号。
*顺便说一下你也可以用蒲团做这件事。确保在配置vhosts部分后重新启动couchdb。其他明智的改变将无效。
对于我们的情况,我们需要将vhosts部分映射到数据库上的重写处理程序。所以我们的vhosts看起来像这样: -
couchdb.local:5984 = your-db/_design/your-design/_rewrite
修改你的再加工处理程序
rewrites: [{
from: 'index',
to: '/_list/index/posts',
method: 'GET',
query: ''
}]
现在,如果您向
发出请求 couchdb.local:5984/index
您应该会看到一个帖子列表。