2010-05-07 70 views
2

我尝试将名称为_myappvar_myotherappvar的名称添加到我自己的字段中以将它们与数据字段区分开来。起初它工作,但在某个时候蒲团开始抱怨。如何命名couchdb中的应用程序特定字段

什么是正确的路要走?

我使用的是couchdb 0.9.0,这可能是旧的,但我不能在这个迭代中升级。

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

编辑2:这对我的应用程序来说有点严重,因为它已经与这些字段一起生活了。我不知道在什么情况下我可以保留工作的部分,只为未来的领域应用新的命名。

回答

2

你是对的。 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,减少等

  2. 你有一个选择。你可以咬紧牙关,立即改变所有文件。我不知道你的应用程序,但我更喜欢这个,因为你正在用_前缀玩火。

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

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

祝你好运!