簡體   English   中英

Scala case類不返回數據

[英]Scala case class not return data

我用的MongoDB和Scala在我的項目中使用薩拉特庫和我的模型包含如下:

case class ApplicationGroupModel(
  @Key("_id") id: ObjectId,
  devicesData: List[ApplicationDevicesData]
  )
case class ApplicationDevicesData(
  hostId: Option[String],
  tcpPorts: List[Int] = List.empty,
  applications: List[String] = List.empty)
object ApplicationGroupModel extends ModelCompanion[ApplicationGroupModel, ObjectId] {

  val collection = ScalaMongoFactory.database(collectionName)
  val dao = new SalatDAO[ApplicationGroupModel, ObjectId](collection = collection) {}
  def apply(rawData: JsValue): ApplicationGroupModel = {
    val devicesDataList = getTcpData(rawData)
    ApplicationGroupModel(new ObjectId,devicesDataList)
  }

 private def getTcpData(rawData: JsValue): List[ApplicationDevicesData] = {
        //function body
        //return List of ApplicationDevicesData

  }

在控制器中,我將模型稱為:

val allData = ApplicationGroupModel.findOneById(new ObjectId("556c23b244aef072afcb6d50")).toList

如果我打印allData它將顯示以下輸出:

ApplicationGroupModel(556c23b244aef072afcb6d50,List(ApplicationDevicesData(Some(127.0.0.1),List(),List()), ApplicationDevicesData(Some(127.0.0.1),List(),List()), ApplicationDevicesData(Some(localhost),List(),List()))))

但是如果我這樣稱呼model

val allData = ApplicationGroupModel.collection.findOneByID(new ObjectId("556c23b244aef072afcb6d50")).toList

並打印allData然后輸出為:

List({ "_id" : { "$oid" : "556c23b244aef072afcb6d50"} ,  "devicesData" : [ { "hostId" : "127.0.0.1" , "tcpPort" : [ 80 , 22 , 443] ,   "application" : [ "ABC"]} , { "hostId" : "127.0.0.1" , "tcpPort" : [ 22] ,   "application" : [ "XYZ"]} , { "hostId" : "localhost" , "tcpPort" : [ 5000 , 4100 , 22 , 80] ,   "application" : [ "ABCD"]}]})

我不知道為什么我的model find方法不返回帶有始終為applications相同的空列表的值的tcpPorts

這是一個簡單的命名問題。 您的模型對象指定了tcpPortsapplications (復數),但是您的Mongo文檔中有tcpPortapplication (單數)。 修復一個或另一個,或者(不建議這樣做,因為這會使您的手寫查詢很@Key ,但它可以解決您的緊迫問題)在每個字段中使用@Key將單數映射為復數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM