Cloudant支持将功能重写吗?

编程入门 行业动态 更新时间:2024-10-11 05:31:19
本文介绍了Cloudant支持将功能重写吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个Cloudant数据库,我想为包含斜杠的文档提供漂亮的URL。所以我定义了这样的重写函数:

I have a Cloudant database, and I want to make pretty URLs for my slash-containing documents. So I define a rewrite function like so:

{ "_id": "_design/myRewrites", "rewrites": "function (req2) {\n return {path: \"../../../\" + req2.path.slice(4).join(\"%2F\")};\n}" }

重写函数的格式很好:

function (req2) { return {path: "../../../" + req2.path.slice(4).join("%2F")}; }

根据CouchDB文档,自CouchDB 1.7起,CouchDB就支持这种重写(作为字符串化函数),但是 Cloudant的文档并未提及此特定功能(仅从数组进行重写)。

According to the CouchDB docs, CouchDB has supported this kind of rewriting (as stringified functions) since CouchDB 1.7, but Cloudant's documentation doesn't speak about this particular functionality (only rewrites from arrays).

当我尝试 myAccount.cloudant/myDb/_design/myRewrites/_rewrite/hello/world/ ,我得到以下响应:

This is reflected in my experience when I try it out myAccount.cloudant/myDb/_design/myRewrites/_rewrite/hello/world/, I get the following response:

{"error":"unknown_command","reason":"unknown ddoc command 'rewrites'"}

但是我读到某个地方Cloudant和CouchDB从2.0开始就匹配了它们的源代码,因此我希望Cloudant支持所有CouchDB功能。这是怎么回事?

However I read somewhere that Cloudant and CouchDB match their source code since 2.0, so I would expect Cloudant to support all CouchDB features. What's the deal?

另请参阅以下有关此推文的内容,其中IBM要求我对StackOverflow提出问题,并建议我可能位于过时的集群中: twitter/digitalheir/status/845910843934085120

Also see following tweet about this, in which IBM asks me to make a question on StackOverflow and suggests I might be on an outdated cluster: twitter/digitalheir/status/845910843934085120

我的数据位置显示为 Porter,London。

My data location says "Porter, London". Could it help if I changed this?

推荐答案

tl; dr:,对不起,但没有。 Cloudant不支持函数重写:(

tl;dr: Sorry, but no. Cloudant doesn't support rewrites as functions :(

我们尝试了您的示例并获得了相同的结果。更深入地研究,我现在可以确定Cloudant不支持通过

We tried your example and got the same results. Digging deeper, I can now confirm that Cloudant does not support URL rewrites via stringified functions. The service only supports rewrites using the array approach.

我不能肯定地说,但我怀疑团队忽略了此功能。 Cloudant不太可能在短期内支持JS功能的重写,因为当前方法无法很好地扩展,因为如果频繁更新视图,它可能会使数据库陷入困境。这类似于Cloudant建议人们使用内置的reduce函数的原因(

I can't say for sure, but I suspect that the team overlooked this feature. That said, it's unlikely that Cloudant will support rewrites as JS functions anytime soon because the current approach does not scale well, as it can bog down the database if views are frequently updated. It's similar to the reason that Cloudant recommends people use the built-in reduce functions (which are implemented in Erlang), rather than writing their own custom JavaScript reduces.

但是重写为数组确实可以扩展,但是这种方法显然行不通。正在动态生成URL。在这种情况下,我们建议将URL重写功能移至应用服务器。不幸的是,如果您要构建CouchApp,那么所有这些都可能是有争议的:/

Rewrites as arrays, however, does scale. But this approach obviously won't work if you're dynamically generating URLs. In this case, we suggest moving the URL rewrite functionality to an app server. Unfortunately, this all might be a moot point if you're building a CouchApp :/

这令人困惑,因此感谢您指出这一点。我要请Cloudant团队在文档中记录这种差异。希望这至少有助于提供一些封闭。您没错,期望它能正常工作。

This was confusing, so thank you for pointing it out. I'm going to ask the Cloudant team to note this difference in the documentation. Hope this at least helps provide some closure. You weren't wrong for expecting it to work.

更多推荐

Cloudant支持将功能重写吗?

本文发布于:2023-10-30 04:41:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1541799.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:重写   功能   Cloudant

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!