관찰자 패턴을 사용하여 쿼리 값을 반환하는 방법

이스라엘 아연

저는이 스칼라 세계에 처음 왔으며 누군가가 저를 도울 수 있다면 감사 할 것입니다. 그래서 저는 MongoDB Scala 드라이버를 사용하여 mongodb 데이터베이스에 파일을 저장하는 Scala 애플리케이션을 구축하고 있습니다. 이전에 Casbah를 사용하고 있었지만 mongodb 공식 웹 사이트에 레거시 드라이버이고 내 프로젝트가 방금 시작되었다고 나와 있으므로 공식 드라이버로 이동하기로 결정했습니다.

그래서 내 응용 프로그램은 ID를 포함하는 객체를 저장하고이 ID는 "Sequences"라는 MongoDB의 컬렉션에 제공됩니다. 이 클래스에서 객체를 저장하고 싶을 때마다 먼저 시퀀스에서 마지막 ID를 가져 와서 1 씩 증가시킵니다.

Casbah를 사용할 때이 코드는 작업을 수행하는 데 사용되었습니다.

def getSequenceId(seqName: String): Int = {
  val query = MongoDBObject("seq_id" -> seqName);
  val result = MongoFactory.SequenceCollection
                          .findAndModify(query, $inc("nextId" -> 1)) 
  val nbr = result.get("nextId");
  return nbr.toString.toDouble.toInt;
}

문제는 MongoDB Scala 드라이버를 사용하면 Observable 패턴을 사용해야하며 약간 혼란 스럽습니다.

지금까지 다음과 같은 코드를 만들었습니다.

def getSequenceId(seqName: String): Int = {
  val query = new BsonDocument("seq_id", new BsonString(seqName))
  val resultado = NewMongo.SequenceCollection.findOneAndUpdate(query,inc("nextId",1)).collect()          
   .subscribe(new Observer[Seq[Document]] {
      override def onNext(result: Seq[Document]): Unit = println(s"UPDATED ${result(0)}")
      override def onError(e: Throwable): Unit = println(s"Failed due to $e")
      override def onComplete(): Unit = println("Completed")
  })
}

문제는이 옵저버 패턴을 처음 사용하고 수정 된 문서를 가져 와서 마지막 ID를 얻는 방법을 모른다는 것입니다. 나는 그것에 대해 많은 웹 사이트에서 검색했지만 답을 찾을 수 없었습니다. 대부분의 경우 Casbah에 대한 해결책 만 찾았습니다.

감사

이스라엘 아연

설명을 위해 직접 수행하는 방법을 찾았습니다.

def getSequenceId(seqName: String): Int = {

  val query = new BsonDocument("seq_id", new BsonString(seqName))    
  val resultado = NewMongo.AibodSequence.findOneAndUpdate(query,inc("nextId",1))    
  resultado.subscribe(new Observer[Document] {        
    override def onNext(result: Document): Unit ={}
    override def onError(e: Throwable): Unit ={}
    override def onComplete(): Unit = {}
  })
  val awaitedR = Await.result(resultado.toFuture, Duration.Inf).asInstanceOf[List[Document]](0)

  val ret = awaitedR.get("nextId").getOrElse(0).asInstanceOf[BsonDouble].intValue();

  return ret;  
}

분명히 결과 관찰자를 미래로 변환하고 Await 함수를 사용하여 반환을 기다릴 수 있습니다. 그런 다음 원하는대로 결과를 조작 할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

관련 관리자 및 역방향 조회를 사용하여이 Django 쿼리 셋을 정리하는 방법

분류에서Dev

SwiftUI 관찰 변수가 값을 변경하자마자 작업을 트리거하는 방법

분류에서Dev

ping 반환 값을 사용하여 bash 명령을 트리거하는 방법

분류에서Dev

조인 쿼리를 사용하여 두 테이블 값을 반환하는 방법

분류에서Dev

SELECT 쿼리를 사용하여 현재 값을 얻는 방법

분류에서Dev

하위 쿼리에서 반환 된 값 목록을 사용하여 "NOT IN"과 유사한 mongodb 컬렉션을 쿼리하는 방법

분류에서Dev

반복 관찰을 사용하여 한 열에서 두 열로 tibble을 변환하는 방법

분류에서Dev

PostgreSQL을 사용하여 중첩 루프를 관리하고 반환을 저장하는 방법

분류에서Dev

LINQ를 사용하여 문자열 하위 집합을 쿼리하는 방법

분류에서Dev

하위 문자열을 사용하여 SQL 쿼리를 작성하는 방법

분류에서Dev

Python을 사용하여 SQL 쿼리 분할을 자동화하는 방법

분류에서Dev

정규식 패턴을 사용하여 문자열을 분할하는 방법

분류에서Dev

Java에서 패턴을 사용하여 문자열을 분할하는 방법

분류에서Dev

Jasper Studio에서 MySQL 쿼리를 사용하여 부울 값에서 문자열 값을 얻는 방법

분류에서Dev

여러 행 상위 쿼리 단일 행 반환을 사용하여 하위 쿼리 하위 쿼리를 작성하는 방법

분류에서Dev

SQL Server 쿼리에서 패턴 및 patindex 함수를 사용할 때 특정 문자열 값을 무시하는 방법은 무엇입니까?

분류에서Dev

소스 별 Firebase Firestore 사용량을 쿼리하는 방법 (관리자 대 웹)

분류에서Dev

쿼리 문자열을 사용하여 단일 버튼에서 두 값을 가져 오는 방법

분류에서Dev

리눅스 명령을 사용하여 나머지 패턴을 얻는 방법?

분류에서Dev

쿼리에서 관찰 가능한 배열을 반환하는 Typescript 및 Breeze

분류에서Dev

쿼리 빌더를 사용하여 관계로 Laravel에서 내 모델을 쿼리하는 방법

분류에서Dev

'쿼리 사용자'를 사용하여 활성 사용자 사용자 이름을 얻는 방법

분류에서Dev

Interval을 타이머로 사용하여 webAPI 서비스를 확인하고 관찰 가능한 새 값 시퀀스를 반환하는 방법

분류에서Dev

Dapper-사용자 지정 열 값을 반환하는 방법

분류에서Dev

수식을 사용하여 Excel에서 숫자 패턴을 만드는 방법

분류에서Dev

mysql 프로 시저 루프 내에서 데이터를 검색 한 다음 사용자 지정 값을 반환하는 쿼리를 실행하는 방법

분류에서Dev

Java를 사용하여 패턴으로 하위 문자열을 얻는 방법

분류에서Dev

리포지토리 패턴을 사용하여 EF 개체를 WCF 모델로 변환하는 방법

분류에서Dev

사용자로부터 값을 반환하는 쿼리의 MongoDB 문제

Related 관련 기사

  1. 1

    관련 관리자 및 역방향 조회를 사용하여이 Django 쿼리 셋을 정리하는 방법

  2. 2

    SwiftUI 관찰 변수가 값을 변경하자마자 작업을 트리거하는 방법

  3. 3

    ping 반환 값을 사용하여 bash 명령을 트리거하는 방법

  4. 4

    조인 쿼리를 사용하여 두 테이블 값을 반환하는 방법

  5. 5

    SELECT 쿼리를 사용하여 현재 값을 얻는 방법

  6. 6

    하위 쿼리에서 반환 된 값 목록을 사용하여 "NOT IN"과 유사한 mongodb 컬렉션을 쿼리하는 방법

  7. 7

    반복 관찰을 사용하여 한 열에서 두 열로 tibble을 변환하는 방법

  8. 8

    PostgreSQL을 사용하여 중첩 루프를 관리하고 반환을 저장하는 방법

  9. 9

    LINQ를 사용하여 문자열 하위 집합을 쿼리하는 방법

  10. 10

    하위 문자열을 사용하여 SQL 쿼리를 작성하는 방법

  11. 11

    Python을 사용하여 SQL 쿼리 분할을 자동화하는 방법

  12. 12

    정규식 패턴을 사용하여 문자열을 분할하는 방법

  13. 13

    Java에서 패턴을 사용하여 문자열을 분할하는 방법

  14. 14

    Jasper Studio에서 MySQL 쿼리를 사용하여 부울 값에서 문자열 값을 얻는 방법

  15. 15

    여러 행 상위 쿼리 단일 행 반환을 사용하여 하위 쿼리 하위 쿼리를 작성하는 방법

  16. 16

    SQL Server 쿼리에서 패턴 및 patindex 함수를 사용할 때 특정 문자열 값을 무시하는 방법은 무엇입니까?

  17. 17

    소스 별 Firebase Firestore 사용량을 쿼리하는 방법 (관리자 대 웹)

  18. 18

    쿼리 문자열을 사용하여 단일 버튼에서 두 값을 가져 오는 방법

  19. 19

    리눅스 명령을 사용하여 나머지 패턴을 얻는 방법?

  20. 20

    쿼리에서 관찰 가능한 배열을 반환하는 Typescript 및 Breeze

  21. 21

    쿼리 빌더를 사용하여 관계로 Laravel에서 내 모델을 쿼리하는 방법

  22. 22

    '쿼리 사용자'를 사용하여 활성 사용자 사용자 이름을 얻는 방법

  23. 23

    Interval을 타이머로 사용하여 webAPI 서비스를 확인하고 관찰 가능한 새 값 시퀀스를 반환하는 방법

  24. 24

    Dapper-사용자 지정 열 값을 반환하는 방법

  25. 25

    수식을 사용하여 Excel에서 숫자 패턴을 만드는 방법

  26. 26

    mysql 프로 시저 루프 내에서 데이터를 검색 한 다음 사용자 지정 값을 반환하는 쿼리를 실행하는 방법

  27. 27

    Java를 사용하여 패턴으로 하위 문자열을 얻는 방법

  28. 28

    리포지토리 패턴을 사용하여 EF 개체를 WCF 모델로 변환하는 방법

  29. 29

    사용자로부터 값을 반환하는 쿼리의 MongoDB 문제

뜨겁다태그

보관