CouchDB中的短而独特的键

时间:2010-12-07 11:21:31

标签: couchdb couchapp

我想将URL缩短程序写为独立的CouchApp,但我想知道它是否可行。 显然,URL缩短器的核心要求是拥有简短且唯一的密钥。

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

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

1 个答案:

答案 0 :(得分:2)

我会根据具有以下结构的文档寻找一个瘦的包装器:

{ _id : short_url , url : long_url }

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

我担心这会产生,尝试,重试"方法是确保唯一性的唯一策略,没有包装器就无法实现。

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