On 22/10/2012 22:25, David Parfitt wrote:
Hello Metin -
I'm trying to get that into the docs right now. Will italics do? :-)
https://github.com/basho/riak-erlang-client/pull/74
Cheers -
Dave
On Mon, Oct 22, 2012 at 5:22 PM, Metin Akat<akat.me...@gmail.com> wrote:
Oh, I see, thanks for this clarification, much appreciated.
I think this should be written somewhere in bold, as 3 days later, I still
wasn't able to find anything on google.
On Tue, Oct 23, 2012 at 12:08 AM, David Parfitt<dparf...@basho.com> wrote:
Hello Metin -
Sorry for the delay. At the moment, all metadata needs to be stored
under the <<"X-Riak-Meta">> dict key. The following example
illustrates how this works:
%% To store metadata:
Object = riakc_obj:new(<<"groceries">>, <<"mine">>, <<"eggs & bacon">>).
MetaData =dict:from_list([{<<"X-Riak-Meta">>, [{"Foo", "Bar"}]}]),
Object2 = riakc_obj:update_metadata(Object, MetaData).
riakc_pb_socket:put(Pid, Object2).
%% To retrieve metadata:
{ok, O} = riakc_pb_socket:get(Pid, <<"groceries">>, <<"mine">>).
{ok, MD} =dict:find(<<"X-Riak-Meta">>, riakc_obj:get_metadata(O)).
We're kicking around ways to improve this in the future.
Cheers -
Dave
On Fri, Oct 19, 2012 at 8:31 AM, Metin Akat<akat.me...@gmail.com> wrote:
I am trying to do something like:
Meta1 =dict:store(<<"ver">>, Ver, Meta0),
Obj1 = riakc_obj:update_metadata(Obj, Meta1),
and then save the object. But on a subsequent read, the metadata k/v
pair is
not there.
Is there anything special that needs to be done for this to work, or is
this
illegal way to use Riak?
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
Hi,
As far as I can see there seems to be an inconsistency between the
Erlang and HTTP APIs with respect to how metadata is handled.
When I query the record created in the example through the Erlang API
(attached to console) I, as expected, get the following:
{ok, RO} = C:get(<<"groceries">>, <<"mine">>).
{ok, MD} = dict:find(<<"X-Riak-Meta">>, riak_object:get_metadata(RO)).
{ok,[{"Foo","Bar"}]}
The metadata parameter is stored in the dictionary exactly as created,
which is expected.
When I query this record through the HTTP interface the same metadata is
returned as a header:
curl -v -X HEAD http://localhost:8098/riak/groceries/mine
> HEAD /riak/groceries/mine HTTP/1.1
> User-Agent: curl/7.21.4 (universal-apple-darwin11.0)
libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5
> Host: localhost:8098
> Accept: */*
>
< HTTP/1.1 200 OK
< X-Riak-Vclock: a85hYGBgzGDKBVIcypz/fga0yrzJYEpkzGNlEG36dZIvCwA=
< Vary: Accept-Encoding
< Server: MochiWeb/1.1 WebMachine/1.9.2 (someone had painted it blue)
< Link: </riak/groceries>; rel="up"
*< Foo: Bar*
< ETag: "5hdCr8ayy5j9orqA6nDJfs"
< Content-Type: application/octet-stream
< Content-Length: 12
<
When I tried to create another record with the same metadata as the
first one through the HTTP interface, I had to prefix the metadata with
"X-Riak-Meta-" in order for it to be saved on the record. When I did
this the interface did however not seem to strip the "X-Riak-Meta-"
prefix from the parameter, and when I query the record through the
Erlang API, the parameter is stored in the metadata dict as
"X-Riak-Meta-Foo" instead of just "Foo".
I was expecting the parameter to be stored as "Foo" internally in Riak
and represented as "X-Riak-Meta-Foo" when getting or setting through the
HTTP API, but that does not seem to be the case.
Is this an inconsistency or is there something I am doing wrong or have
missed here?
Best regards,
Christian
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com