Erlang 用于在服务器上的映射CRDT中设置/更新寄存器字段的语法

Erlang 用于在服务器上的映射CRDT中设置/更新寄存器字段的语法,erlang,riak,crdt,Erlang,Riak,Crdt,在Riak的服务器端设置CRDT Map中的lwwreg寄存器值的语法是什么?我尝试了下面这样的代码,但似乎无效: %% 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,<<"un

在Riak的服务器端设置
CRDT Map
中的
lwwreg
寄存器值的语法是什么?我尝试了下面这样的代码,但似乎无效:

%% 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_lwwreg
,并且必须为寄存器值指定
assign
操作-因此,语法变为:

riak_kv_crdt:update(Obj,<<"testing">>,{crdt_op,riak_dt_map,{update,
[{update,{<<"uname">>,riak_dt_lwwreg},{assign,<<"ahmed">>}}]},undefined})
riak_kv_crdt:update(Obj,{crdt_op,riak_dt_map,{update,
[{update,{,riak_dt_lwwreg},{assign,}}]},undefined})
但这里您使用的是内部riak api,而不是通过HTTP或PB公开的api。它可能会改变。小心!
riak_kv_crdt:update(Obj,<<"testing">>,{crdt_op,riak_dt_map,{update,
[{update,{<<"uname">>,riak_dt_lwwreg},{assign,<<"ahmed">>}}]},undefined})