Ich frage die Liste der Benutzer aus MNESIA-Datenbank in Chicagoboss. Ich erhalte den Fehler, wenn ich versuche, die Listen in Listen hinzuzufügen: foreach with ++ operator. Mein Ziel ist, basierend auf Benutzer-ID Ich werde Ets: Nachschlagen in meinem Cache und erstellen Sie eine Liste wie - [{{< < "Name" >>, < < "Batman" >>}, {< < "Schritte" >> , 2552}, {< < "Entfernung" >>, 2050}}].Erlang: Liste der Tupel in Listen erstellen: foreach
Für jeden Benutzer werde ich diese Liste erstellen und mit der vorherigen Liste hinzufügen. Damit kann ich schließlich auf < < "Schritte" >> sortieren und die Binärliste durch JSON-Codierung konvertieren und es über WebSockets an den Client senden.
Ich erhalte den Fehler in dieser Zeile: Messwert1 = Lesung2 ++ Currentlist
wie ich habe Messwert1 als eine leere Liste decalred.
Meine Frage ist, wie kann ich die Listen innerhalb der Listen manipulieren: foreach und dann die Ergebnisliste über Websocket senden?
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)},
Danke steve! – raich