我想为 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_client和riak_dt_map的源代码,但我是 erlang 的新手,所以我进展缓慢,希望能得到一些帮助。