구독

일시 중단 fun <t : RealmObject> RealmQuery<t>.구독(name: 문자열, updateExisting: Boolean = false, 모드: WaitForSync = WaitForSync.FIRST_TIME, timeout: Duration = Duration.INfinITE): RealmResults<t>

백그라운드에서 쿼리를 사용하여 명명된 구독 을 자동으로 생성하고 로컬 Realm 파일에 대해 동일한 쿼리를 실행한 결과를 반환합니다.

이는 다음과 같은 작업보다 더 간소화된 대안입니다.

fun suspend getData(realm: Realm): RealmResults<Person> {
realm.subscriptions.update { bgRealm ->
add("myquery", bgRealm.query<Person>())
}
realm.subscriptions.waitForSynchronization()
return realm.query<Person>().find()
}

로컬 쿼리를 실행하기 전에 서버가 모든 데이터를 보낼 때까지 기다릴지 여부를 정의할 수 있습니다. This is relevant as there might be delay from creating a subscription to the data being available on the device due to either latency or because a large dataset needs to be downloaded.

기본 동작은 처음 구독 이 호출되면 서버에서 데이터가 다운로드될 때까지 쿼리 결과가 반환되지 않는다는 것입니다. 동일한 쿼리를 구독 하기 위한 후속 호출에서 업데이트가 백그라운드에서 다운로드되는 동안 쿼리는 로컬 데이터베이스에서 즉시 실행됩니다.

Return

로컬 Realm 파일에 대해 쿼리를 실행한 결과입니다. 반환되는 결과는 사용된 모드 에 따라 달라집니다.

매개변수

이름

구독의 이름입니다. 이를 통해 나중에 SubscriptionSet 에서 식별할 수 있습니다.

모드

모드는 구독을 해결하는 데 사용됩니다. 자세한 내용은 WaitForSync 를 참조하세요.

타임아웃

서버가 구독에 의해 정의된 객체를 반환할 때까지 기다리는 시간입니다. 이는 WaitForSync.ALwaysWaitForSync.FIRST_TIME 에만 관련이 있습니다.

스로우

시간 초과취소예외

쿼리 결과가 반환되기 전에 지정된 시간 초과에 도달한 경우입니다.

Flexible Sync를 사용하지 않는 Realm에서 이 메서드를 호출하는 경우입니다.

서버가 쿼리 세트를 수락하지 않은 경우. 정확한 이유는 예외 메시지에서 확인할 수 있습니다.


일시 중단 fun <t : RealmObject> RealmQuery<t>.구독(모드: WaitForSync = WaitForSync.FIRST_TIME, timeout: Duration = Duration.INfinITE): RealmResults<t>
일시 중단 fun <t : RealmObject> RealmResults<t>.구독(모드: WaitForSync = WaitForSync.FIRST_TIME, timeout: Duration = Duration.INfinITE): RealmResults<t>

백그라운드에서 로컬 쿼리 결과에서 익명 구독 을 자동으로 생성하고 Realm 파일에 대해 동일한 쿼리를 다시 실행한 결과를 반환합니다. 이는 subscribe 를 호출하여 명명된 변형을 만드는 것과 동일하게 동작합니다. 정확한 동작에 대한 자세한 내용은 이 메서드를 참조하세요.

Return

로컬 Realm 파일에 대해 쿼리를 실행한 결과입니다. 반환되는 결과는 사용된 모드 에 따라 달라집니다.

매개변수

모드

모드는 구독을 해결하는 데 사용됩니다. 자세한 내용은 WaitForSync 를 참조하세요.

타임아웃

서버가 구독에 의해 정의된 객체를 반환할 때까지 기다리는 시간입니다. 이는 WaitForSync.ALwaysWaitForSync.FIRST_TIME 에만 관련이 있습니다.

스로우

시간 초과취소예외

쿼리 결과가 반환되기 전에 지정된 시간 초과에 도달한 경우입니다.

Flexible Sync를 사용하지 않는 Realm에서 이 메서드를 호출하는 경우입니다.


일시 중단 fun <t : RealmObject> RealmResults<t>.구독(name: 문자열, updateExisting: Boolean = false, 모드: WaitForSync = WaitForSync.FIRST_TIME, timeout: Duration = Duration.INfinITE): RealmResults<t>

백그라운드에서 로컬 쿼리 결과를 사용하여 명명된 구독 을 자동으로 생성하고 Realm 파일에 대해 동일한 쿼리를 다시 실행한 결과를 반환합니다.

이는 다음과 같은 작업보다 더 간소화된 대안입니다.

fun suspend getData(realm: Realm): RealmResults<Person> {
val results = realm.query<Person>().find()
realm.subscriptions.update { bgRealm ->
add("myquery", results.query(""))
}
realm.subscriptions.waitForSynchronization()
return realm.query<Person>().find()
}

로컬 쿼리를 실행하기 전에 서버가 모든 데이터를 보낼 때까지 기다릴지 여부를 정의할 수 있습니다. 이는 지연 시간 또는 대규모 데이터 세트를 다운로드해야 하기 때문에 기기에서 사용 가능한 데이터에 대한 구독을 생성하는 데 지연이 발생할 수 있기 때문에 관련이 있습니다.

기본 동작은 처음 구독 이 호출되면 서버에서 데이터가 다운로드될 때까지 쿼리 결과가 반환되지 않는다는 것입니다. 동일한 쿼리를 구독 하기 위한 후속 호출에서 업데이트가 백그라운드에서 다운로드되는 동안 쿼리는 로컬 데이터베이스에서 즉시 실행됩니다.

Return

로컬 Realm 파일에 대해 쿼리를 실행한 결과입니다. 반환되는 결과는 사용된 모드 에 따라 달라집니다.

매개변수

이름

구독의 이름입니다. 이를 통해 나중에 SubscriptionSet 에서 식별할 수 있습니다.

모드

모드는 구독을 해결하는 데 사용됩니다. 자세한 내용은 WaitForSync 를 참조하세요.

타임아웃

서버가 구독에 의해 정의된 객체를 반환할 때까지 기다리는 시간입니다. 이는 WaitForSync.ALwaysWaitForSync.FIRST_TIME 에만 관련이 있습니다.

스로우

시간 초과취소예외

쿼리 결과가 반환되기 전에 지정된 시간 초과에 도달한 경우입니다.

Flexible Sync를 사용하지 않는 Realm에서 이 메서드를 호출하는 경우입니다.

서버가 쿼리 세트를 수락하지 않은 경우. 정확한 이유는 예외 메시지에서 확인할 수 있습니다.