2

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

正确的方法是什么?

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

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

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

4

1 回答 1

2

你是对的。CouchDB 文档 API,特殊字段部分对此进行了解释。

顶级字段可能不以_.

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
        }
      }
    }
    

祝你好运!

于 2010-05-08T08:27:08.497 回答