Как бы я вернул список данных из RethinkDB в Java для Spring / thymeleaf - PullRequest
1 голос
/ 27 марта 2020

Итак, у меня есть таблица (в RethinkDB она называется видео), и я хочу иметь функцию, которая бы возвращала все данные в списке (или что-то еще). Потому что я хочу иметь веб-страницу со всеми видео, которые есть в моей таблице, с использованием тимелина (для перебора списка).

Я просматривал документацию RethinkDB и пробовал эти примеры. Но главная проблема всегда заключается в возможности преобразования данных в список.

Например:

@GetMapping("/videos")
public String showVideos(Model model) {      
    System.out.println(Videos.getVideos(conn));
    return "videos";
}
public static Table getVideos(Connection conn) {
    Table videos = r.table("videos").run(conn);
    return videos;
}

Результаты:

nested exception is java.lang.ClassCastException: class com.rethinkdb.net.Cursor$DefaultCursor cannot be cast to class java.util.List (com.rethinkdb.net.Cursor$DefaultCursor is in unnamed module of loader 'app'; java.util.List is in module java.base of loader 'bootstrap')] with root cause

java.lang.ClassCastException: class com.rethinkdb.net.Cursor$DefaultCursor cannot be cast to class java.util.List (com.rethinkdb.net.Cursor$DefaultCursor is in unnamed module of loader 'app'; java.util.List is in module java.base of loader 'bootstrap')

При использовании этого кода:

Cursor cursor = r.table("videos").run(conn);
for (Object doc : cursor) {
     System.out.println(doc);
}

Я могу видеть каждую ценность. Но с другой стороны, я не имею понятия, как на самом деле выразить это так, чтобы тимелист мог перебирать его.

В документации RethinkDB я также нашел это:

try(Result<Object> result = r.table("users").run(conn)) {
    for (Object doc : result) {
        processResult(doc);
    }
}

Но я не могу найти, откуда взялся Результат (я думаю, что это класс).

1 Ответ

0 голосов
/ 28 марта 2020

Решение, которое я нашел:

@GetMapping("/videos")
   public String showVideos(Model model) {
       ArrayList<Videos> videosHTML = new ArrayList<Videos>();
       Cursor<Videos> videos = r.table("videos").run(conn, Videos.class);

       for(Videos vid : videos) {
           videosHTML.add(vid);
       }
       model.addAttribute("videotitles", videosHTML);
       return "videos";
   }
<tr th:each="vid: ${videotitles}">
        <td th:text="${vid.title}"></td>
        <td th:text="${vid.description}"></td>
        <td th:text="${vid.id}"></td>
        <a th:href="'/video/'+${vid.id}"
            href="/video.html"
            class="buttonLook mediumButton">Watch Video</a>
        <br>
</tr>
...