couchdb - CouchDB 中的短键和唯一键

标签 couchdb couchapp

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

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

有没有一种方法可以使用 CouchDB 生成简短且唯一的 key ?还是我需要一个围绕 CouchDB 的薄包装?

最佳答案

我会根据具有以下结构的文档选择一个薄包装器:

{ _id : short_url , url : long_url }

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

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

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

关于couchdb - CouchDB 中的短键和唯一键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4376054/

相关文章:

couchdb - 从只读的 couchdb 复制

security - 如何限制 CouchApp 对 CouchDB 的 `_user` 表的访问?

node.js - couchapp 不起作用! ( Node .couchapp.js)

grails - 哪个框架用于访问 couchDB 的门户网站?

couchdb - CouchApp 无法从 View 中检索键/值对,但 Futon 可以

couchdb - 我可以通过浏览器 UI 查看 Cloudant 本地文档吗

amazon-s3 - 我应该将附件存储在 CouchDB 还是 S3 中?

couchdb - 使用 sofa 和 couchApp 的分析计数器

couchdb - 如何使用 Futon 并将 couchapp 推送到使用虚拟主机的 CouchDB?