Как поместить данные из MongoDB в объект с помощью Casbah и Scala

Я хочу добавить данные класса «Пользователь» из MongoDB. find() метод не возвращает нужный мне тип.

У меня есть фрагмент кода, я не знаю, как его использовать:

def findUser(username: String) : Option[User] =
  {
    var user:Option[User] = None
    val userToFind = MongoDBObject("username" -> username)
    users.findOne(userToFind).foreach { x =>
      user = Some(new User(x("username").toString,x("password").toString,x("firstname").toString, x("lastname").toString, true,2))
    }
    user
  }

Как использовать мой результат для добавления в параметры объекта?

это мой пользователь объекта:

class User (
  val username    : String,
  var password    : String,
  var firstname   : String,
  var lastname    : String,
  var isActivated : Boolean,
  val tenantId    : Int
             )
{}

person Azuken    schedule 07.10.2013    source источник


Ответы (1)


например так:

def findUser(username: String): Option[User] = {
    val result = mongoCollUser.findOne(MongoDBObject("username"->username));
    result.map { user => toUser(user)  }
  }


  def toUser(dbObject:DBObject) : User = {
      User(dbObject.as[String]("username"),dbObject.as[String]("password"),dbObject.as[String]("firstname"),dbObject.as[String]("lastname"),dbObject.as[Boolean]("isActivated"),dbObject.as[Int]("tenantId"))
  }

case class User (
             val username    : String,
             var password    : String,
             var firstname   : String,
             var lastname    : String,
             var isActivated : Boolean,
             val tenantId    : Int
             )
person grotrianster    schedule 07.10.2013
comment
Черт, я надеялся, что toUser не понадобится - было бы неплохо, если бы там было что-то вроде dbObject.as [User] - person Kyrstellaine; 11.04.2015