Как да именувате специфични за приложението полета в couchdb

Опитах се да добавя свои собствени полета с имена като _myappvar и _myotherappvar към документи, за да ги разгранича от полетата с данни. В началото работи, но в един момент футонът започва да се оплаква.

Какъв е правилният път?

Използвам couchdb 0.9.0, това може да е старо, но няма да мога да надстроя в тази итерация.

Редактиране: Предполагам, че _* е запазено за couchdb vars. Мога да избера нещо друго, но има ли най-добра практика или хо, решавате ли това?

Edit2: Това някак си е тежко за моето приложение, защото вече е на живо с тези полета. Чудя се при какви обстоятелства мога да запазя частите, които работят, и да приложа ново именуване само за бъдещи полета.


person user89021    schedule 07.05.2010    source източник


Отговори (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 във вашите изгледи, карти, редукции и т.н.

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

Късмет!

person JasonSmith    schedule 08.05.2010