4

しばらくここに座って、関数呼び出しで 2 回目の呼び出し時に配列パラメーターが失われるのはなぜだろうと考えています。

私が取り組んでいるスクリプトは、CouchDB/PouchDB の後にマップされ、アイテムを JSON 文字列として複数のストレージ (ローカル ストレージを含む) に格納します。パラメータは次のとおりです。

_id         id of the item
_rev        revision string (version), counter and hash
_content    whatever content
_revisions  array of all prior hashes and current counter
_revs_info  all previous revisions of this item with status

PUT現在、デフォルトで既存のドキュメントを更新する操作を試みています。私は複数のストレージで作業しているのでPUT SYNC、あるストレージから別のストレージにドキュメントのバージョンを「コピー&ペースト」する も持っています (すべてのストレージですべてのバージョンを利用できるようにすることを目標にしています)。また、すべてのバージョン ハッシュを格納するドキュメント ツリーを含む別のファイルも保持しています。このツリー ファイルは、付属の をSYNCs使用して更新されます。_revs_infoPUT

私の問題はシーケンシャルSYNC PUTsです。最初のものは機能しますが、2番目のものはパラメーターを失ってい_revs_infoます。そして、私は理由を知りません...

これが私の最初の呼び出しです(私のQUnitモジュールから)、うまくいきます:

o.jio.put({
    "content":'a_new_version',
    "_id":'myDoc',
    "_rev":"4-b5bb2f1657ac5ac270c14b2335e51ef1ffccc0a7259e14bce46380d6c446eb89",
    "_revs_info":[
        {"rev":"4-b5bb2f1657ac5ac270c14b2335e51ef1ffccc0a7259e14bce46380d6c446eb89","status":"available"},
        {"rev":"3-a9dac9ff5c8e1b2fce58e5397e9b6a8de729d5c6eff8f26a7b71df6348986123","status":"deleted"},
        {"rev":fake_rev_1,"status":"deleted"},
        {"rev":fake_rev_0,"status":"deleted"}
        ],
    "_revisions":{
        "start":4,
        "ids":[
            "b5bb2f1657ac5ac270c14b2335e51ef1ffccc0a7259e14bce46380d6c446eb89",
            "a9dac9ff5c8e1b2fce58e5397e9b6a8de729d5c6eff8f26a7b71df6348986123",
            fake_id_1,
            fake_id_0
            ]}
    },
    function(err, response) { 
       // run tests
    });

ただし、同じ関数をもう一度呼び出すと、次のようになります。

o.jio.put({
    "content":'a_deleted_version',
    "_id":'myDoc',
    "_rev":"3-05210795b6aa8cb5e1e7f021960d233cf963f1052b1a41777ca1a2aff8fd4b61",
    "_revs_info":[   {"rev":"3-05210795b6aa8cb5e1e7f021960d233cf963f1052b1a41777ca1a2aff8fd4b61","status":"deleted"},{"rev":"2-67ac10df5b7e2582f2ea2344b01c68d461f44b98fef2c5cba5073cc3bdb5a844","status":"deleted"},{"rev":fake_rev_2,"status":"deleted"}],
    "_revisions":{
        "start":3,
        "ids":[
            "05210795b6aa8cb5e1e7f021960d233cf963f1052b1a41777ca1a2aff8fd4b61",
            "67ac10df5b7e2582f2ea2344b01c68d461f44b98fef2c5cba5073cc3bdb5a844",
            fake_id_2
            ]}

    },
    function(err, response) {
      // run tests
    });

_revs_info配列に何も含まれていないため、スクリプトが失敗します。他のすべてのパラメータと、追加しているすべてのランダム パラメータが転送されます。orの代わりにstringorを追加すると、スクリプトを生きたまま安全に作成できます。objectarray

ただし、配列は...渡されません...

質問:
見つけられなかった点を突き止めようとして数時間この問題に取り組んできましたが、まったくわかりません。arraysJavascriptでパラメーターとして渡すときに、なぜコンテンツが失われるのか、理由を知っている人はいますか?

ありがとう!

EDIT :最初の の後に
通常の を追加しましたが、これは (定義されずに) うまくいきました。PUTSYNC-PUT_revs_info

4

1 に答える 1