在Riak服务器端的lwwreg
中设置CRDT Map
寄存器值的语法是什么?我尝试了下面的代码似乎无效:
%% Obj is a map object to which we want to add/set a register "uname" with value
%% "ahmed"
riak_kv_crdt:update(Obj,<<"testing">>,{crdt_op,riak_dt_map,
{update,[{assign,<<"uname">>,<<"ahmed">>}]},undefined})
我收到有关操作无效的错误 - 我查看了riak_dt_map.erl
的源代码,但仍无法找出正确的语法:
> riak_kv_crdt:update(Obj,<<"testing">>,{crdt_op,riak_dt_map,{update,
[{assign,<<"uname">>,<<"ahmed">>}]},undefined}).
** exception error: no function clause matching
riak_dt_map:apply_ops([{assign,<<"uname">>,<<"ahmed">>}],
{<<"testing">>,1},
{[{<<"testing">>,1}],
.....
会理解正确语法的指示。
答案 0 :(得分:1)
想出来。正确的语法如下 - 密钥必须伴随字段的类型,在这种情况下为riak_dt_lwwreg
,并且必须为寄存器值指定assign
操作 - 因此,语法变为:
riak_kv_crdt:update(Obj,<<"testing">>,{crdt_op,riak_dt_map,{update,
[{update,{<<"uname">>,riak_dt_lwwreg},{assign,<<"ahmed">>}}]},undefined})