3

我想将 URL 缩短器编写为独立的 CouchApp,但我想知道是否可能。显然,URL 缩短器的核心要求是具有短且唯一的键。

我想要的是向 CouchDB 发布一个长 URL 并获得一个缩短的 URL。我考虑过使用更新处理程序,但它必须查询数据库以检查密钥是否唯一,这似乎是不可能的。

有没有办法用 CouchDB 生成短而唯一的密钥?还是我需要一个围绕 CouchDB 的薄包装器?

4

1 回答 1

2

我会选择一个薄包装,基于具有以下结构的文档:

{ _id : short_url , url : long_url }

插入一个新的长 URL 可以在一个步骤中完成:让包装器生成一个新的_id,尝试一个 PUT,然后用一个新的重试,_id直到它成功。这将保证每个短 URL 只使用一次。

恐怕这种“生成、尝试、重试”的方法是确保唯一性的唯一策略,而且如果没有包装器,它就无法使用。

如果您希望相同的长 URL 重复使用相同的短 URL,您还可以添加一个视图,如果它确实存在,则为您的 URLecho(doc.url,null)抓取。_id这意味着,除非多个客户端尝试同时添加相同的长 URL,否则只有一个短 URL 将用于该长 URL。

于 2010-12-07T13:21:36.117 回答