如何创建一个简单的Riak CRDT Map,其中包含一个Register名称username和值test?我正在看这个这里的文件,但不明白XPath和地图中寄存器的名称是如何连接的。
下面是我想要做的事情:创建/更新一个Map,其名称为username,值为test (在桶类型mapbucket、桶uinfo、键test1下)。下面是Erlang客户端将如何做到这一点(不是我编写的另一段代码中经过测试的修改过的复制粘贴):
Map = riakc_map:new(),
Map1 = riakc_map:update({<<"username">>, register},
fun(R) -> riakc_register:set(<<"test">>, R) end,
Map),
{ok, Pid} = riakc_pb_socket:start_link("127.0.0.1", 8087),
riakc_pb_socket:update_type(Pid,{<<"mapbucket">>,<<"uinfo">>},"test1",riakc_map:to_op(Map1))我搜索了github代码存储库,但是在Haskell客户机中找不到这样做的例子。如果任何熟悉Haskell客户端的人和CRDT操作系统能够提供关于如何执行上述操作的指导,我将非常感激。
发布于 2016-05-03 15:21:21
我想出了怎么做。xpath in Map似乎是一个递归选择器,用于访问映射中另一个映射中深埋的字段。所以,对于地图中的顶级字段,xpath就是那个字段名。因此,解决办法是:
-- get the connection to 127.0.0.1:8087
conn <- connect defaultClient
-- xpath here is just "username" fieldname - we use RegisterSet operation
-- Alternatively, for xpath value, you can do: ("username" :| []), especially, if
-- passing it as argument in a function
let op = "username" `mapUpdate` RegisterSet "test"
-- send off the above operation to create/update the map
sendModify conn "mapbucket" "uinfo" "test1" [op] https://stackoverflow.com/questions/36993458
复制相似问题