2014-01-30 5 views
1

У меня есть простой код для получения номера порта от MongoDB. Я использую scala, и водитель, конечно, casbah.Как получить значение как число от Mongodb, casbah

def getPortNo : Int { 
    val query = MongoDBObject("_id" -> "Store") 
    val data = coll.findOne(query) 
    return data.get("port") 
    } 

Здесь мое приложение имеет только один документ, удостоверяющий идентификатор «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

Какую ошибку вы получаете? – Saket

ответ

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) 
    } 
+0

«как» не разрешен в среде IDE. – ddarz4u

+1

Вы импортировали com.mongodb.casbah.Imports._'? –

+0

да. вот инструкции по импорту, которые я импортировал, другие, относящиеся к casbah. import com.mongodb.casbah.MongoClient и import com.mongodb.casbah.Imports._ – ddarz4u

 Смежные вопросы

  • Нет связанных вопросов^_^