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 нового пользователя"), что я и ожидаю от него. Однако, когда я добавляю индекс в электронное письмо, я получаю ошибку дублирующего ключа. Я бы хотел, чтобы вместо получения ошибки дубликата ключа я получил вариант «Нет», как я делаю, когда читаю из коллекции, и нет соответствующего документа.
Как я могу получить параметр «Нет», когда MongoDB возвращает ошибку дублирующего ключа?
Или как мне обрабатывать эту ошибку, которую я возвращаю?