Мне интересно, смогу ли я получить некоторую помощь при повторении списка групп, сделав запрос POST для каждой группы, чтобы создать «комнату», итерацию пользователей для каждой группы и создание запрос POST, чтобы назначить их в эту конкретную комнату.Elm: список Iterate, выполняющий несколько HTTP-запросов
У меня есть следующая модель.
model = {
groups = [
{
title = "Foo"
, users = [
{ name = "Joe" }
, { name = "Mary" }
]
},
{
title = "Bar"
, users = [
{ name = "Jill" }
, { name = "Jack" }
]
}
]
}
Желаемый результат состоит в том, что комната Foo была создана и Джо и Мэри были назначены, и бар был создан и Джилл и Джек были назначены.
Вид на данный момент будет простой кнопкой, которая вызывает действие.
div []
[ button [ onClick InviteUsersToRoom ] [ text "Invite users to room" ] ]
я создал 2 POST запросы:
createRoom: возьмите
title
, создать комнату с помощьюtitle
и возвращающиеroom_id
AddUser: принять a
room_id
иname
пользователя, добавьте пользователей в комнату и верните статусok
пример:
-- create a room for each group
-- passing in `title` as the room name
-- which will return the room id from `decodeCreateRoomResponse`
createRoom : String -> String -> Cmd Msg
createRoom title =
Task.perform
CreateRoomsFail
CreateRoomsSuccess
(Http.post
decodeCreateRoomResponse
("https://some_api?room=" ++ title)
Http.empty
)
decodeCreateRoomResponse : Json.Decoder String
decodeCreateRoomResponse =
Json.at ["room", "id"] Json.string
-- add a user to a room using a `room_id` and the user's name
-- returns a bool from `decodeAddUserResponse`
addUser : String -> String -> Cmd Msg
addUser room_id user =
Task.perform
AddUserFail
AddUserSuccess
(Http.post
decodeCreateChannelResponse
("https://some_api?room=" ++ room_id ++ "&user=" ++ user)
Http.empty
)
decodeAddUserResponse : Json.Decoder String
decodeAddUserResponse =
Json.at ["ok"] Json.bool
мне интересно, как вы бы идти о шить это вверх в целом, так что OnClick:
- итерация каждая группа
- сделать POST для создания комнаты
- взять room_id из ответа и повторить попытку пользователя
- POST на room_id и пользователи называют
Любая помощь приветствуется.
Большое спасибо за подробный ответ. Я всегда так много узнаю из ваших ответов! –