我有一个从MongoDB获取端口号的简单代码。我使用scala,驱动程序当然是casbah。
def getPortNo : Int {
val query = MongoDBObject("_id" -> "Store")
val data = coll.findOne(query)
return data.get("port")
}
这里我的应用程序只有一个id等于“store”的文档。
但这在IDE中无法解决。
我有相同的代码来获取版本。
def getVersion : String = {
val query = MongoDBObject("_id" -> "Store")
val data = coll.findOne(query)
return data.get("version").toString
}
这很有效。
我尝试了data.get("port").toString.toInt
,它也无效。
有人可以告诉我该怎么做。我认为这里的问题是返回值不是数字或字符串。什么是返回类型以及如何将其转换为数字。
答案 0 :(得分:1)
这取决于您如何存储“端口”字段。试试data.as[Number]("value").intValue()
。它必须以任何数字格式工作。
您应该考虑findOne
返回Option
,因此您也可以返回Option
:
def getPortNo : Option[Int] = {
val query = MongoDBObject("_id" -> "Store")
val data = coll.findOne(query)
data.map(_.as[Number]("port").intValue)
}
或者使用一些默认值:
def getPortNo : Int = {
val query = MongoDBObject("_id" -> "Store")
val data = coll.findOne(query)
data.map(_.as[Number]("port").intValue).getOrElse(80)
}