【问题标题】:How to name application specific fields in couchdb如何在 couchdb 中命名应用程序特定字段
【发布时间】:2010-05-07 18:15:55
【问题描述】:

我尝试在文档中添加我自己的名称为 _myappvar_myotherappvar 的字段,以将它们与数据字段区分开来。起初它有效,但在某些时候被褥开始抱怨。

正确的方法是什么?

我使用的是 couchdb 0.9.0,这可能是旧的,但我将无法在此迭代中升级。

编辑: 我猜_* 是为 couchdb 变量保留的。我可以选择其他东西,但有没有最佳做法,或者你在解决这个问题吗?

Edit2: 这对我的应用程序来说有点严重,因为它已经与这些字段一起存在。我想知道在什么情况下我可以保留有效的部分,并且只为未来的字段应用新的命名。

【问题讨论】:

    标签: couchdb couchdb-futon


    【解决方案1】:

    你是对的。 CouchDB Document API, Special Fields 部分对此进行了解释。

    顶级字段不能以 _ 开头。

    CouchDB 很轻松,所以最好的方法是对您的应用程序来说最简单。关于您的具体修改:

    1. 一个想法是使用_ 后缀而不是前缀。另一个想法是.myapp 字段,它是您内部数据的对象(命名空间)。您也可以将它们组合起来:

      {
        "type": "the document type",
        "var1": "Normal variable 1",
        "var2": true,
        "myapp_": {
          "var": "Something internal",
          "othervar": null,
        }
      }
      

      现在你可以在你的视图中引用doc.myapp_.var map、reduce 等。

    2. 你有一个选择。您现在可以硬着头皮更改所有文档。我不知道你的应用,但我更喜欢这样,因为你正在使用 _ 前缀玩火。

      但是,您也可以同时拥有这两种类型的文档,并简单地教您的 map() 函数如何处理这两种类型。

      function(doc) {
        if(doc.type == "the document type") {
          if(doc._myappvar) {
            emit(doc._id, doc._myappvar); // The old way
          } else if(doc.myapp_) {
            emit(doc._id, doc.myapp_.var); // The new way
          }
        }
      }
      

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-31
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多