Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala liftweb:获取模型字段_Scala_Lift - Fatal编程技术网

Scala liftweb:获取模型字段

Scala liftweb:获取模型字段,scala,lift,Scala,Lift,我是liftweb和scala的新手。 我正在为rss agregator开发json rest api,我有两个问题: package my.domain import net.liftweb.http._ import net.liftweb.http.rest._ import net.liftweb.json.JsonAST._ import net.liftweb.common.{Box,Full,Empty,Failure,ParamFailure} import my.dom

我是liftweb和scala的新手。 我正在为rss agregator开发json rest api,我有两个问题:

package my.domain

import net.liftweb.http._
import net.liftweb.http.rest._
import net.liftweb.json.JsonAST._
import net.liftweb.common.{Box,Full,Empty,Failure,ParamFailure}


import my.domain.model.{RssItem}

object ContentRest extends RestHelper {
 def getFirstRssItem = {
  val item = RssItem.find(ByField(RssItem.title, "test"))
  item.title
 }
 serve {
     case "api" :: "static" :: _ XmlGet _=> <b>Static</b>
     case "api" :: "static" :: _ JsonGet _ => JString("string")
 }
}

想知道您是否可以尝试使用net.liftweb.mapper.By(而不是ByField),例如

导入net.liftweb.mapper.By

val item=RssItem.find(通过(RssItem.title,“测试”)


Find
返回一个
(您可以像
选项
一样使用该框),因为不清楚是否可以找到实际的元素

您可以编写如下内容,而不是
item.title

item.map(_.title) openOr "untitled"

item.map({.title)
提供标题的
,该框包含标题或为空(如果未找到任何项目)。如果没有
,则会出现空错误。
openOr
然后返回
的内容或指定的默认值。

正如Debilski指出的那样,查找()返回一个框[RssItem],如果没有项,则该框为空;如果找到项,则该框为满(item),因此获取标题需要一个map()或使用用于理解的(map/flatMap/filter上的语法sugar)

就查询而言,您需要的是By()而不是ByField()。我已清理了您的代码,以便它可以编译:

object ContentRest extends RestHelper {
  def getFirstRssItemTitle = {
    for {
      item <- RssItem.find(By(RssItem.title, "test"))
    } yield item.title
  }

  serve {
    case "api" :: "static" :: _ XmlGet _=> 
    for {
      title <- getFirstRssItemTitle ?~ "No RSS data"
    } yield <b>{title}</b>
  }
}
objectcontentrest扩展了RestHelper{
def getFirstRssItemTitle={
为了{
项目
为了{

标题第二个错误可能只是第一个错误的结果。
object ContentRest extends RestHelper {
  def getFirstRssItemTitle = {
    for {
      item <- RssItem.find(By(RssItem.title, "test"))
    } yield item.title
  }

  serve {
    case "api" :: "static" :: _ XmlGet _=> 
    for {
      title <- getFirstRssItemTitle ?~ "No RSS data"
    } yield <b>{title}</b>
  }
}