Я пытаюсь получить сообщение об успехе или неудаче запроса к моей RethinkDB в Phoenix Framework с помощью сообщения Flash. Однако я не знаю правильной подписи для получения сообщения о результате из RethinkDB в моем блоке кода.
def index(conn, _params) do
#Query that creates a table in the database
table_create("contentText")
|> Basedados.Database.run
# List all elements of a table from the database
q = table("contentText")
|> Basedados.Database.run #Run the query through the database
|> IO.inspect
conn
|> put_flash(:error, "Some Message")
|> put_flash(:info, "Another Message")
|> render "index.html", contentText: q #Render users searched on the users template
end
EDIT: Хорошо, я обнаружил, что должно быть поле ошибок в строках:
%RethinkDB.Record{data: %{"deleted" => 0, "errors" => 0, "generated_keys" => ["15cc4e19-fc72-4c19-b3a5-47141b6a63e0"], "inserted" => 1, "replaced" => 0, "skipped" => 0, "unchanged" => 0}}
Однако у меня, похоже, его нет (я пробовал как q.errors
и q.data.errors
), и каждый раз получаю сообщение об ошибке. Ошибка, которую я тестирую, заключается в том, что таблица базы данных не существует (я полностью меняю contentText на что-то другое).
Я могу выполнить проверку ошибок с данными:
q = table("contentText")
|> Basedados.Database.run #Run the query through the database
if is_nil(q.data) do
conn
|> put_flash(:error, "Error")
|> render "index.html", contentText: "failed" #Render users searched on the users template
else
conn
|> put_flash(:info, "Sucess")
|> render "index.html", contentText: q #Render users searched on the users template
end
Однако это кажется ограниченным решением, поскольку оно определяет только наличие данных в сообщении. Ошибка может быть совершенно другой. И поскольку это поле, кажется, их подсчитывает, я хотел бы получить это значение и вместо этого использовать его в моем состоянии (если ошибки> 0). Что мне нужно, чтобы получить это поле?