Frage

Ich lerne Scala und MongoDB und ich verwende Scalatra und Casbah als Rahmen für eine einfache Web -App.

Es ist ein einfaches Message Board, die Absicht, Crud Operations in Casbah zu lernen. Probleme ist, dass ich feststelle, dass ich, wenn ich die Nachrichten aufliste, keine Möglichkeit habe, auf einen Datensatz in MongoDB auf der Website einzigartig zu verweisen.

Mein aktueller Code ist unten.

Das Problem, das ich habe, ist, dass eine Objektid nicht in eine Zeichenfolge gegossen werden kann. Ohne eine eindeutige ID für jede Zeile kann ich jedoch keine Löschfunktion auf der Webseite angeben.

Gibt es eine Standardmethode, um diese Dinge mit Casbah zu bewältigen? Alle Tutorials, die ich gesehen habe, haben einen einzigartigen Zugriff auf Aufzeichnungen von einer Webseite ignoriert oder Skalatra vollständig ignoriert und nur auf die Handhabung von Datensätzen aus Scala -Code konzentriert.

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"}
War es hilfreich?

Lösung

Sie können nicht werfen, aber Sie können es als Schnur nach nach:

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

Und in der Vorlage könnten Sie dies tun

#{l.id.toString}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top