ruby - CouchRest - 检查文档 ID 是否存在

标签 ruby couchdb couchrest

我可能只是在明显的 doco 中错过了它,但我不知道如何使用 CouchRest 检查我的数据库中是否存在文档。

我尝试了db.get(id),但这在我的应用程序中抛出了 404,并且必须尝试/捕获它来解决它似乎有点愚蠢。

是否有一种简单的方式来表示“如果此 ID 存在 -> 更新,否则 -> 创建”?

最佳答案

快速回答 - 不。

基本上,不可能在沙发上保存或更新,因为更新现有文档需要修订号,并且您需要先获取它才能查看。您需要在这里处理 404。

为了更有帮助,我可能会使用这样的方法:

def save_or_create(db, doc)
  begin
    rev = db.get(doc['_id'])
    doc['_rev'] = rev
    db.save_doc(doc)
  rescue RestClient::ResourceNotFound => nfe
    db.save_doc(doc)
  end
end

未经测试,但应该接近。

关于ruby - CouchRest - 检查文档 ID 是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4505743/

相关文章:

mysql - 以 Ruby on Rails 3 中 2 个表的形式显示数据

javascript - 使用node.js和socket.io向用户显示实时数据

django - unQL 和 Django?

database - CouchDB - "Plucking"来自 View 的最近邻居文档。

couchdb - 列出 CouchDB 中的所有 CouchApps?

ruby-on-rails - CouchRest 模型使用自定义值而不是 _id 字段的 guid

arrays - 如何理解 Ruby 的 .each 和 .map

ruby - 在 Windows 8 : Unable to execute file C:\Program Files(x86)\Heroku\ruby-1. 9.3\bin\gem.bat 上安装 heroku toolbelt 时出错

javascript - 如何修复 Rails 'ActiveRecord::RecordNotFound (Couldn' t 找不到没有 ID 的程序)'