2017-12-28 5 views
0

매끄러운 3.2.1을 사용하고있었습니다. operatorId를 외래 키로 사용합니다.Slick 시도 (쿼리 (실행)) 항상 성공 반환

내 코드는 내가 외래 키를 위반하지만, 실패 할 수 없다 시도 operatorId를 사용하는

def changeCommentStatus(changeRequest: StatusUpdateRequest(implicit ec: ExecutionContext): Future[Int] = { 
    val changeStatusQuery = comments 
     .filter(_.id inSetBind changeRequest.commentIds) 
     .filter(_.status === changeRequest.prevStatus) 
     .map(c => (c.operatorId, c.updatedAt, c.status)) 
     .update((Some(changeRequest.operatorId), Some(new Timestamp(System.currentTimeMillis())), changeRequest.status)) 
    db.run(changeStatusQuery) 
    } 
Try(changeCommentStatus(changeRequest)) match { 
     case Success(response) => bla bla bla 
     case Failure(f) => bla bla bla 

같은 것입니다. 내가 어떻게 고칠 수 있니?

+0

아무 관련 참조하지 말아 postgres –

+0

나는 또한 비슷한 이름 js tool slick이라는 이름으로 추가 되었기 때문에 추가되었습니다. –

답변

0

사용 DBIOAction#asTryflatMap 다음, DBIOAction[Try[Int]]에, 결과 DBIOAction[Int]를 변환 : 다음

def changeCommentStatus(...): Future[Int] = { 
    val changeStatusQuery = comments 
    .filter(...) 
    .filter(...) 
    .map(...) 
    .update(...) 
    .asTry 
    .flatMap { 
     case Success(res) => DBIO.successful(res) 
     case Failure(t) => DBIO.failed(t) 
    } 

    db.run(changeStatusQuery) 
} 

을 할 수 있습니다 다음과 같은 방식으로 Future에 패턴 일치 :

changeCommentStatus(changeRequest).onComplete { 
    case Success(response) => ... 
    case Failure(t)  => ... 
} 
+0

내 문제가 해결되었습니다. 고마워요. D –

관련 문제