2013-10-07 41 views
0

我想從MongoDB中放入「用戶」類數據。 find()方法不會返回我想要的類型。如何將數據從MongoDB轉換爲包含Casbah和Scala的對象

我有一段代碼,我不知道我可以使用它:

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 
      ) 
{} 

回答

4

例如像這樣:

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

正是我想要的!謝謝 ! – Azuken

+0

該死的,我希望用戶不需要 - 它肯定會很好,有像dbObject.as [用戶] – Kyrstellaine

相關問題