gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:57:46 26 4
gpt4 key购买 nike

我正在学习 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com