scala - 使用 Scalatra 和 Casbah 进行 CRUD 操作

标签 scala casbah scalatra

我正在学习 Scala 和 MongoDB,并使用 Scalatra 和 Casbah 作为简单 Web 应用程序的框架。

这是一个简单的留言板,意图学习Casbah中的CRUD操作。问题是我发现当我列出消息时我无法唯一引用网站上 MongoDB 中的记录。

我当前的代码如下。

我遇到的问题是 ObjectID 无法转换为字符串。但是如果每行没有唯一的 id,我无法从网页提供删除功能。

是否有使用 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));
}

索引.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"}

最佳答案

您无法强制转换,但可以轻松地将其呈现为字符串:

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

在模板中你可以这样做

#{l.id.toString}

关于scala - 使用 Scalatra 和 Casbah 进行 CRUD 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9314646/

相关文章:

javascript - 从 Angular js表单发布数据时出错

jquery - 为什么jquery将json作为参数名称而不是作为请求正文发布?

java - Spark kafka 流 - java.lang.NoClassDefFoundError : akka/util/Helpers$ConfigOps$

java - 将 R 集成到 Java Web 应用程序中

mongodb - Casbah Scala MongoDB 驱动程序 - 从 DBObject 获取数据

mongodb - Mongo中的SocketException

java - 为什么 VisualVM Profiler 不能分析我的 Scala 控制台应用程序?

scala - 幺半群如何泛化类型

mongodb - Casbah Mongo 作为 scala 数组 : is this the most elegant way?

Scalatra 无法找到或加载主类