3

別のバケットのマップのカウンターをデクリメントする riak の postcommit フックを実装したいと考えています。しかし、私は riak データ型を扱うのに少し苦労しています。

ここから私が試みていriak consoleます:

(riak@127.0.0.1)9>{ok, C} = riak:local_client().
{ok,{riak_client,['riak@127.0.0.1',undefined]}}
(riak@127.0.0.1)10>{ok, Obj} = C:get({<<"product">>, <<"default">>}, <<"1">>).
{ok,{r_object,{<<"product">>,<<"default">>},
          <<"1">>,
          [{r_content,{dict,5,16,16,8,80,48,
                            {[],[],[],[],[],[],[],[],[],[],[],[],...},
                            {{[],[],[],[],
                              [[<<"dot">>|{<<"#\tþù"...>>,{...}}]],
                              [],[],[],[],[],...}}},
                      <<69,2,0,0,0,11,114,105,97,107,95,100,116,95,109,97,112,
                        77,1,...>>}],
          [{<<35,9,254,249,108,41,151,242>>,{1,63593788980}}],
          {dict,1,16,16,8,80,48,
                {[],[],[],[],[],[],[],[],[],[],[],[],[],...},
                {{[],[],[],[],[],[],[],[],[],[],[],...}}},
          undefined}}
(riak@127.0.0.1)11> Mp = riak_object:get_value(O3).
<<69,2,0,0,0,11,114,105,97,107,95,100,116,95,109,97,112,
  77,1,131,80,0,0,0,206,120,1,203,96,...>>
(riak@127.0.0.1)12> MpP = riak_dt_map:from_binary(Mp).
{error,invalid_binary}

productバケットのデータ型は に設定されていmapます。保存されている各オブジェクトquantityには、デクリメントしたいカウンターが必要です。

ただし、コミット前後のコンテキストでデータ型を扱うドキュメントやサンプル コードが見つかりません。(実際、あらゆる種類の例はほとんどありません)。私はriak_clientriak_dt_mapのソースを読んでいますが、私は erlang を初めて使用するので、進歩が遅く、助けていただければ幸いです。

4

1 に答える 1