Синтаксис для установки / обновления полей регистра в Map CRDT на сервере
Какой синтаксис для настройки lwwreg
зарегистрировать значения в CRDT Map
на стороне сервера в Riak? Я попробовал код, подобный приведенному ниже, который кажется недействительным:
%% 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}],
.....
Будут благодарны указатели на правильный синтаксис.
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})