1

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}],
                    .....

正しい構文へのポインタをいただければ幸いです。

4

1 に答える 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})
于 2016-05-08T17:44:11.967 に答える