import com.escalatesoft.subcut.inject._
import com.mongodb.casbah.Imports._
import com.novus.salat._
import com.novus.salat.global._
import com.novus.salat.dao._
case class User(_id: ObjectId = new ObjectId, email: String, password: String)
class UserDAO(coll: MongoCollection = DatabaseClient.getCollection("users")) extends SalatDAO[User, ObjectId](
collection = coll
)
class UserRepository(implicit val bindingModule: BindingModule) extends Injectable {
val userDAO = injectOptional [UserDAO] getOrElse {new UserDAO}
def createUser (email: String, password: String):Option[ObjectId] = {
val newUser = User(email = email, password = password)
val createdUser = userDAO.insert(newUser)
createdUser
}
}
基本上当插入一个新用户时,它返回 Some("ObjectId of new user") 这正是我期望它做的。但是,当我在电子邮件上放置索引时,我会收到重复键错误。我想要的不是得到重复键错误,而是得到 None 选项,就像我从集合中读取并且没有匹配的文档时所做的那样。
当 MongoDB 返回重复键错误时,如何获得 None 选项?
或者我应该如何处理我回来的这个错误?