ScalaとMongoDBを学習しています.ScalatraとCasbahを単純なWebアプリケーションのフレームワークとして使用しています。ScalatraとCasbahを使用したCRUD操作
これは、CasbahでCRUD操作を学習するための簡単なメッセージボードです。問題は、私がメッセージをリストするときに、サイト上のMongoDBのレコードを一意に参照する方法がないことです。
私の現在のコードは以下の通りです。
問題は、ObjectIDを文字列にキャストできないことです。しかし、各行に固有のIDがなければ、Webページから削除機能を提供することはできません。
Casbahを使用してこれらのものを処理する標準的な方法はありますか?私が見たすべてのチュートリアルは、ウェブページからのレコードへのアクセスや、無視されたスカラを完全に無視し、スカラコードからのレコードの処理にのみ焦点を合わせました。
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"}
lid.to.toStringアプローチが行われました。その後、削除メソッドで文字列を解析して投稿を削除すると、大変感謝します。 –
なぜ、私はi.getAs [ObjectId]( "_ id")。toStringが機能しないのか知っていただけですか?確かにi.getAs [ObjectId]( "_ id")はObjectIdを返し、ObjectIdは.toStringメソッドを持っているので、なぜi.getAs [ObjectId]( "_ id")。 –
SomeまたはNoneを返すためです。だから、 'toString'は、文字列' Some(文字列としてのあなたのID) ''または文字列 '' None '' –