나는 play2.1을 사용 중이며 MongoDB에서 주어진 이름이 이미 사용되었는지 확인하는 유효성 검사기가 필요합니다. 내 질문은이 라이브러리에 의존하지 않지만, 나는 비동기 MongoDB 드라이버입니다 반응 mongo를 사용하고 있습니다.Play2의 비동기 입력 검사기
일반적으로 말하면, 재생 프레임 워크 및 스칼라에서 비동기 유효성 검사를 사용하는 권장 방법은 무엇입니까? 을 알고 싶습니다. [T]를 확인하기 위해 JsValue
notTaken=new Reads[JsValue]{
def reads(js:JsValue):JsResult[JsValue]={
val oid = js \ "_id"
Await.result(coll.find(Json.obj("_id"->oid)).one[JsObject].map(_.isEmpty),Duration(1, SECONDS)) match {
case true => JsSuccess(js)
case false => JsError("Object Id doesn't exist:"+Json.stringify(oid))
}
}
이를 읽어 사용
Reads.verifying[String]{name=>
Await.result(coll.find(Json.obj("name"->name)).one[JsObject].map(_.isEmpty),Duration(1, SECONDS))
}
같은 패턴 : 여기
내가 생각하지 않는 내 코드는 비동기 유효성 검사를 해결 우아한 방법입니다 코드는 작동하지만 우아한/스칼라로 보입니다. 위의 경우를 해결하기위한 대안 접근법.
나는 사용자의 존재감을 사로 잡을 때도 똑같은 방법을 사용합니다. http://stackoverflow.com/questions/21709112/scala-async-callback-code-rewriting – sh1ng