0

我正在研究 riak-erlang 客户端,

我做了以下...

3> Mapf = fun(Obj,_,_) -> [riak_object:get_value(Obj)] end.
#Fun<erl_eval.18.82930912>
4> 
4>  {ok, [{0,[R]}]} = riakc_pb_socket:mapred(Pid,<<"tst">>, [{map{qfun,Mapf},none,true}]).    
** exception error: no match of right hand side value {ok,[{0,[<<"2">>,<<"4">>,<<"6">>,<<"3">>,<<"5">>,<<"1">>]}]}

如何解决这个问题

以及如何解决这类问题

{ok, [{0,[S]}]} = riakc_pb_socket:mapred(Pid,<<"test">>,[{map,  {qfun,Maps},none,true}]).   
** exception error: no match of right hand side value {ok,[{0,
                                                        [<<"{\"age\": 24, \"name\": \"krishna\"}">>,
                                                         <<"{\"age\": 29, \"name\": \"sharat\"}">>,
                                                         <<"{\"age\": 27, \"name\": \"anil\"}">>,
                                                         <<"{\"age\": 28, \"name\": \"kumar\"}">>,
                                                         <<"{\"age\": 24, \"name\": \"gopi\"}">>,
                                                         <<"{\"age\": 25, \"name\": \"ramesh\"}">>]}]}

如果我只想得到年龄,年龄是均匀的。如何编写地图功能。

4

1 回答 1

0

您有模式匹配问题。您尝试两次使用[R] = [<<data…&gt;>,…].

[R]实际上匹配一个 1 元素列表,元素为R.
您需要删除这些括号以匹配整个数据结构,如下所示:{ok, [{0,R}].

于 2014-05-17T22:44:01.750 回答