2

_myappvarやのような名前の独自のフィールド_myotherappvarをドキュメントに追加して、データ フィールドと区別しようとしました。最初はうまくいきましたが、ある時点で布団が不平を言い始めます。

正しい方法は何ですか?

私はcouchdb 0.9.0を使用しています。これは古いかもしれませんが、この反復ではアップグレードできません。

編集:_* couchdb変数用に予約されていると思います。私は何か他のものを選ぶことができますが、ベストプラクティスはありますか、それともこれを解決していますか?

Edit2:すでにこれらのフィールドでライブになっているため、これは私のアプリケーションにとってはかなり深刻です。どのような状況下で機能する部分を残して、将来の分野に新しい名前を付けることができるのだろうか.

4

1 に答える 1

2

あなたは正しいです。CouchDB Document APIのSpecial Fieldsセクションで説明されています。

最上位フィールドは で始まらない場合があります_

CouchDB はリラックスしているため、アプリケーションにとって最も簡単な方法が最善の方法です。特定の編集について:

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

幸運を!

于 2010-05-08T08:27:08.497 に答える