2
我正在學習Scala和MongoDB,並且正在使用Scalatra和Casbah作爲簡單Web應用程序的框架。使用Scalatra和Casbah的增刪改查操作
這是一個簡單的留言板,有意在Casbah學習CRUD操作。問題是我發現當我列出消息時,我無法在網站上唯一地引用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
[email protected] 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"}
找到了l.id.toString方法。然後在delete方法中解析字符串以刪除帖子,非常感謝。 – 2012-02-17 11:16:29
現在,如果我只知道爲什麼i.getAs [ObjectId](「_ id」)。toString不起作用?當然,i.getAs [ObjectId](「_ id」)應該返回一個ObjectId,並且ObjectId有一個.toString方法,爲什麼i.getAs [ObjectId](「_ id」)。toString不起作用? – 2012-02-17 11:18:21
因爲它返回一個或一個無。因此'toString'將返回字符串''Some(<你的id爲字符串>)「或字符串'」None「' – 2012-02-17 13:10:45