代码之家  ›  专栏  ›  技术社区  ›  David J.

使用多个斜杠将文档保存到CouchDB URL

  •  0
  • David J.  · 技术社区  · 7 年前

    我第一次接触NoSQL DBs是通过Firebase,在那里我通常将json数据存储到如下url: category ,然后将其他内容存储到url,如 category/subcategory .

    在CouchDB中尝试同样的操作时,我遇到了一个问题。

    例如,我保存了一个简单的对象,如:

    {"_id":"one"} 
    

       database/category
    

    按预期工作。然后我尝试保存以下内容

    {"_id":"two"}
    

    database/category/subcategory
    

    我收到以下错误消息:

    {"error":"not_found","reason":"Document is missing attachment"}
    

    显然,当您在url中使用多个斜杠时,Coach将资源理解为附件。如果是这样的话,如何创建数据具有多个级别的数据库,如 Geography/Continents/Africa/Egypt 例如

    1 回复  |  直到 7 年前
        1
  •  1
  •   Juanjo Rodriguez    7 年前

    CouchDB不适合您描述的用法。CouchDB是一个平面文档存储。

    您应该将结构展平,以便将其存储在CouchDB中。

    {"_id":"country-es",
     "type":"geography",
     "country":"Spain",
     "continent":"Europe"
    }
    
    {"_id":"country-fr",
     "type":"geography",
     "country":"France",
     "continent":"Europe"
    }
    

    然后使用视图,以便有一种按层次查询它的机制。

    function (doc) {
      if (doc.type == "geography") {
          emit([doc.continent,doc.country], doc._id );
      }
    }