首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haskell Riak客户端地图的CRDT操作规程

Haskell Riak客户端地图的CRDT操作规程
EN

Stack Overflow用户
提问于 2016-05-02 23:57:40
回答 1查看 85关注 0票数 1

如何创建一个简单的Riak CRDT Map,其中包含一个Register名称username和值test?我正在看这个这里的文件,但不明白XPath和地图中寄存器的名称是如何连接的。

下面是我想要做的事情:创建/更新一个Map,其名称为username,值为test (在桶类型mapbucket、桶uinfo、键test1下)。下面是Erlang客户端将如何做到这一点(不是我编写的另一段代码中经过测试的修改过的复制粘贴):

代码语言:javascript
复制
  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操作系统能够提供关于如何执行上述操作的指导,我将非常感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-03 15:21:21

我想出了怎么做。xpath in Map似乎是一个递归选择器,用于访问映射中另一个映射中深埋的字段。所以,对于地图中的顶级字段,xpath就是那个字段名。因此,解决办法是:

代码语言:javascript
复制
-- 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] 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36993458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档