Question

J'apprends Scala et MongoDB et comme je les utilise Scalatra et la kasbah comme cadre pour une application web simple.

Il est une carte de message simple, l'intention d'apprendre les opérations CRUD dans casbah. Problèmes est je trouve que lorsque je liste les messages que je n'ai aucun moyen de faire référence uniquement un enregistrement dans MongoDB sur le site.

Mon code actuel est ci-dessous.

La question que je vais avoir est qu'un ObjectID ne peut pas être jeté dans une chaîne. Mais sans un identifiant unique pour chaque ligne, je ne peux pas fournir une fonction de suppression de la page Web.

est-il un moyen standard de gérer ces choses en utilisant casbah? Tous les tutoriels que j'ai vu ont ignoré un accès unique enregistrements à partir d'une page Web ou complètement ignoré scalatra et concentré uniquement sur le traitement des dossiers à partir du code 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"}
Était-ce utile?

La solution

Vous ne pouvez pas lancer mais vous pouvez le rendre comme une chaîne easilly après:

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

Et dans le modèle que vous pouvez le faire

#{l.id.toString}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top