Search code examples
mongodbscalacasbah

How to put datas from MongoDB into an object with Casbah and Scala


I want to put in a "User" class datas from MongoDB. find() method doesn't return the type I want.

I have a piece of code, I don't know how i can use it :

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
  }

How to use my result to put into my object parameters ?

this is my Object User :

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

Solution

  • for example like this:

    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
                 )