Синтаксис для установки / обновления полей регистра в 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})
Другие вопросы по тегам