時間をかけて couchbase のドキュメントに連結する文字列がいくつかあります。私はclojureでこれをやっています、コードはかなり簡単です
;create document when new
(cbc/add client key value)
;append when document exists
(c/async-prepend client key (str "," value) (c/get-cas-id client key)
そして、これはすべて正常に機能します。議論したい問題の手順を大まかに説明すると、次のようになります。
- 加算値:「1」
- 値の取得:
1
- 付加値 ",2"
- 値の取得:
1,2
これはうまく機能し、すべてがうまくいきます。しかし、この質問は実際には先頭に追加することではなく、まだ有効なjsonである方法でcouchbaseに先頭に追加しています。1,2
は有効な json ではないため、 couchbase UI には base64 でエンコードされた値が表示されるか、無効な json と表示されることがあります (memcache と api から正しい値が返される場合でも)。
カウチベース フォーラムから、これが予想される動作であることを知りました。これを避けて、値を有効なjson形式で保存(および追加)したいと思います。
私は次のようなことができます
{ "vals" : [1,2] }
vals
毎回に追加しますが、今、追加3
すると[1,2], 3
、有効なjsonではないことが判明します。
値を取得し、終了ブラケットを削除し、新しい値を追加し、ブラケットを終了して再度保存したくありません。これは、(1) 追加の目的を無効にし、(2) ドキュメントがどんどん大きくなり、効率的ではないためです。すべての値を読み取り、毎回新しい値を追加します。
最後に、ここでの私の質問は次の 2 つに要約されます。
1) データをそのままにしておいても大丈夫ですか - とにかく API から適切なデータを取得していますが、UI はデータを表示できないか、base64 でエンコードされたデータを表示するので編集できません..それが唯一の方法です欠点 (UI からデータを編集する必要があるのはなぜですか?)
2)これを回避する方法がある場合、毎回有効なjsonにする方法でデータを保存する方法があるため、APIだけでなくUIにも表示されます。- これの欠点は、ドキュメントがはるかに大きくなり、必要なデータを取得するために必要な処理が多くなることです ({ "value": [1, 2]}
逆に1,2
)
言うまでもなく、さらに値を追加する方法がまだわかりません!
アドバイスしてください!