Вопрос

Я изучаю Scala и MongoDB, и я использую Scalatra и Casbah в качестве основы для простого веб -приложения.

Это простая доска объявлений, намерение изучать операции CRUD в Casbah. Проблемы в том, что я обнаружил, что когда я перечисляю сообщения, у меня нет возможности однозначно ссылаться на запись в MongoDB на сайте.

Мой текущий код ниже.

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

Есть ли стандартный способ обработки этих вещей с помощью Casbah? Все учебные пособия, которые я видел, игнорировали уникальный доступ к записям с веб -страницы или полностью игнорировали Scalatra и сосредоточены только на обработке записей из кода Scala.

IndexController.scala

get("/msgs") 
{
    contentType = "text/html";
    var list = new ListBuffer[Message]()

    for (i <- coll.find())
    {
        var message = new Message();
        message.author = i.getOrElse("author", "???").toString();
        message.message = i.getOrElse("msg", "???").toString();
        message.id = i.getOrElse("_id", "???").asInstanceOf[String];

        list += message;
    }

    layoutTemplate("/Views/index.scaml",("list" -> list.toList));
}

index.scaml

%body
    %h2
    Messages
    %br
        %ul
            -@ val list: List[domain.Message]
            - for (l:domain.Message <- list)
                %li
                    From: #{l.author}
                    \- #{l.message}
                    %form{:method => "DELETE", :action => "msg/#{l.id}"}
                        %input{:type => "submit", :value => "Delete"}
Это было полезно?

Решение

Вы не можете разыграть, но вы можете сделать это как струнку Eastilly после:

i.getAs[ObjectId]("_id") map (_.toString) getOrElse "???"

И в шаблоне вы можете сделать это

#{l.id.toString}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top