0
私はエリクシール/フェニックスを勉強していて、私の前に仕事があります。私は1つのサイクルでデータベースからの結果をフィルタリングする必要があります。このようなもの:エリクサー/フェニックスのサイクルでリストに追加する方法
user = Repo.get_by(User, api_token: token)
rooms = Repo.all(Room)
result = []
if !Enum.empty?(rooms) do
Enum.each rooms, fn room ->
users = Poison.decode!(room.users)
if Enum.member?(users, user.id) do
result = result ++ [room]
end
end
end
json(conn, %{"rooms" => result})
この場合、リストに項目を追加することはできません。なぜですか?これは機能的な言語なので... サイクル内でリストに項目を追加する方法はありますか?
あなたは私に "なぜあなたはデータベースからオブジェクトIDを取得しないのですか?"私はroom.usersは文字列にエンコードされたjson配列を格納すると言います
感謝を。それは仕事ですが、実際にそれを1つのサイクルでフィルタリングする方法はありますか?これはすべての場合に機能しないようです。 –
リストを反復しながら変数を任意に変更したい場合は、 'Enum.reduce/3'を使用できます。ここに、 'Enum.reduce/3'を使用した私の答えのいくつかがあります:https://stackoverflow.com/search?tab=newest&q=user%3a320615%20%5belixir%5d%20Enum.reduce – Dogbert