私はMethylia DatabaseのユーザーリストをChicagobossから検索します。私はリスト内でリストを追加しようとするとエラーが発生します:foreach with ++ operator。私の目標は、ユーザーIDに基づいて私はキャッシュを検索し、[{< < "name" >>、< < "バットマン" >>}、{< < "steps"のようなリストを作成する>> 、2552}、{<、<、 "distance" >>、2050}}]。Erlang:リスト内にタプルのリストを作成しています:foreach
このリストを作成し、前のリストを追加します。最終的に私は< < "steps" >>をソートし、バイナリリストをjsonエンコーディングで変換し、WebSocket経由でクライアントに送信することができます。
私は、この行でエラーになっている:私は空のリストとしてReading1をdecalredてきたように Reading1 = Reading2 ++ Currentlist
を。
私の質問は、リスト内のリストを操作する方法です:foreachとwebsocket経由で結果リストを送信しますか?
BelugaUsers = boss_db:find(users, [{accesstoken, 'not_equals', ''}]),
Reading1 = [],
Reading2 = [],
lists:foreach(fun(X) ->
{_,_,BEmail,BName,_,_,BAccessToken,_} = X,
UserKey = BEmail ++ "-" ++ ?MYAPICALL1,
io:format("UserKey for Leader Board: ~n~p~n",[UserKey]),
[Reading] = ets:lookup(myapi_cache, list_to_binary(UserKey)),
{_,Result} = Reading,
ActivitySummary = proplists:get_value(<<"activitySummary">>, Result),
%Print ActivitySummary for the user ....printing fine
io:format("ActivitySummary ==========: ~n~p~n",[ActivitySummary]),
%Create a list of the format
%[{{<<"name">>,<<"Batman">>}, {<<"steps">>,2552}, {<<"distance">>,2050}}]
Currentlist = [{{<<"name">>, list_to_binary(BName)}, {<<"steps">>, proplists:get_value(<<"steps">>, ActivitySummary)}, {<<"distance">>, proplists:get_value(<<"distance">>, ActivitySummary)}}],
%% HERE I'M GETTING error%%
Reading1 = Reading2 ++ Currentlist
end, BelugaUsers),
%sort the list
Reading3 = lists:keysort(2, Reading1),
%reverse the list
Reading4 = lists:reverse(Reading3),
WebSocketId ! {text, jsx:encode(Reading4)},
ありがとうSteve! – raich