我想将URL缩短程序写为独立的CouchApp,但我想知道它是否可行。 显然,URL缩短器的核心要求是拥有简短且唯一的密钥。
我想要的是将长URL发布到CouchDB并获得缩短的URL。我想过使用更新处理程序,但它必须查询数据库以检查密钥是否唯一,这似乎是不可能的。
有没有办法用CouchDB生成短而唯一的密钥?或者我是否需要围绕CouchDB的薄包装?
答案 0 :(得分:2)
我会根据具有以下结构的文档寻找一个瘦的包装器:
{ _id : short_url , url : long_url }
可以在一个步骤中插入新的长URL:让包装器生成新的_id
,尝试PUT,然后使用新的_id
再试一次,直到成功为止。这将保证每个短URL只使用一次。
我担心这会产生,尝试,重试"方法是确保唯一性的唯一策略,没有包装器就无法实现。
如果您希望相同的长网址重复使用相同的短网址,您还可以添加echo(doc.url,null)
的视图,并获取您的网址_id
(如果存在)。这意味着,除非多个客户端尝试在同一时间添加相同的长URL,否则只有一个短URL将用于该长URL。