Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

Atlas App Services 백엔드에 연결 - Node.js SDK

이 페이지의 내용

  • 시작하기 전에
  • 앱 클라이언트에 액세스
  • 앱 클라이언트의 인스턴스 조회
  • 앱 클라이언트에 대한 시간 초과 구성
  • 앱 메타데이터 암호화
  • 특정 MongoDB 서버에 연결
  • 런타임 중 다른 MongoDB 서버에 연결

앱 클라이언트는 Atlas App Services 백엔드에 대한 인터페이스입니다. 인증 기능 동기화 관리에 액세스할 수 있습니다.

  1. App Services 앱 만들기

  2. Realm Node.js SDK 설치

클라이언트 에서 App Services 백엔드 에 연결하려면 구성 객체 를 만들어야 합니다. 그런 다음 해당 구성 객체 를 Realm.App() 인스턴스 에 전달합니다.

App Services UI 에서 찾을수 있는 App Services App 의 id 필드 와 App ID 를 포함해야 합니다.

// Initialize your App.
const app = new Realm.App({
id: "<yourAppId>",
});

여러 앱 클라이언트 인스턴스를 만들어 여러 앱에 연결할 수 있습니다. 동일한 앱 ID 를 주식 하는 모든 앱 클라이언트 인스턴스는 동일한 기본 연결을 사용합니다.

중요

앱 초기화 후 앱 구성 변경하기

버전 12.6.0에서 변경됨: baseUrl 은(는) 앱 구성에 캐시되지 않습니다.

앱 클라이언트 를 초기화하면 구성이 내부적으로 캐시됩니다. 동일한 프로세스 내에서 구성이 변경된 앱을 닫았다가 다시 열려고해도 아무런 효과가 없습니다. 클라이언트 는 캐시된 구성을 계속 사용합니다.

Node.js SDK 버전 12.6.0 부터는 의 이 baseUrl AppConfiguration 캐시 되지 않습니다 . 즉, baseUrl 을 변경할 수 있으며 앱 클라이언트는 업데이트된 구성을 사용합니다. 이전 SDK 버전에서는 캐시된 앱 구성의 baseUrl 변경 사항이 적용되지 않았습니다.

애플리케이션의 어느 곳에서나 앱 클라이언트의 인스턴스를 조회하려면 Realm.App.getApp() 을 호출하고 App ID 를 전달합니다.

const app = Realm.App.getApp("<yourAppId>");

AppConfiguration 에서 요청에 대한 선택적 timeout 를 구성할 수 있습니다. 요청 이 시간 초과되기 전에 밀리초 단위로 허용합니다.

이 시간 초과 간격은 선택 사항인 동기화 구성 cancelWaitsOnNonFatalErrors 부울과 함께 사용할 수 있습니다. 제한 시간 간격이 경과하면 업로드 및 다운로드를 기다리고 있는 미해결 작업이 모두 취소됩니다. 이 설정이 false이면 Realm이 이러한 시간 초과를 치명적이지 않은 오류로 처리하므로 업로드 및 다운로드 대기가 취소되지 않습니다.

예제 는 시간 초과 후 비동기 작업 취소를 참조하세요.

const app = new Realm.App({
id: APP_ID,
// You can optionally specify a timeout in milliseconds
timeout: 10000,
});

Atlas App Services가 클라이언트 기기에 저장하는 메타데이터를 암호화할 수 있습니다. MetadataMode 열거형 값을 사용하여 암호화 동작을 결정합니다.

앱 메타데이터를 암호화하려면 다음을 수행합니다.

  1. MetadataMode Realm 에서 를 가져오고 다른 종속성을 가져옵니다:

    import Realm, { BSON, MetadataMode } from "realm";
    import Realm, {
    AppConfiguration,
    BSON,
    MetadataMode,
    Configuration,
    } from "realm";
  2. metadata 속성을 포함하는 앱 구성 객체를 만듭니다.

  3. metadata.modeMetadataMode.Encryption로 설정합니다.

  4. 암호화에 사용할 키로 metadata.encryptionKey 를 설정합니다.

  5. 앱 구성 객체를 new Realm.App() 에 전달합니다.

// Retrieve encryption key from secure location or create one
const encryptionKey = new ArrayBuffer(64);
// Use encryption key in app configuration
const config = {
id: APP_ID,
metadata: { mode: MetadataMode.Encryption, encryptionKey: encryptionKey },
};
const app = new Realm.App(config);
// Retrieve encryption key from secure location or create one
const encryptionKey = new ArrayBuffer(64);
// Use encryption key in app configuration
const config: AppConfiguration = {
id: APP_ID,
metadata: { mode: MetadataMode.Encryption, encryptionKey: encryptionKey },
};
const app = new Realm.App(config);

기본적으로 Atlas Device SDK는 https://services.cloud.mongodb.com 의 글로벌 baseURL 를 사용하여 Atlas에 연결합니다. 경우에 따라 다른 서버에 연결해야 할 수도 있습니다.

  • App Services App이 로컬 배포 를 사용하며 해당 리전의 로컬 baseURL 에 직접 연결하려고 합니다.

AppConfiguration에서 baseURL 를 지정할 수 있습니다.

.. code-block:: javascript
const appConfig = {
id: APP_ID,
baseUrl: "https://example.com",
};
const app = new App(appConfig);
.. code-block:: typescript
const appConfig: AppConfiguration = {
id: APP_ID,
baseUrl: "https://example.com",
};
const app = new App(appConfig);

버전 12.8.0에 추가 되었습니다.

경우에 따라 앱 이 실행 동안 baseURL 을(를) 변경해야 할 수도 있습니다.

런타임 중에 baseURL 를 변경하려면 app.updateBaseUrl() 메서드를 호출합니다. string 값은 트레일링 슬래시 로 끝날 수 없습니다.

const app = new App(EDGE_APP_ID);
await app.updateBaseUrl("http://localhost:80");
// ... log in a user and use the app...
// ... some time later...
// Reset baseURL to the default: https://services.cloud.mongodb.com
await app.updateBaseUrl(null);
const app = new App(EDGE_APP_ID);
await app.updateBaseUrl("http://localhost:80");
// ... log in a user and use the app...
// ... some time later...
// Reset baseURL to the default: https://services.cloud.mongodb.com
await app.updateBaseUrl(null);

이 API 는 실험용이므로 이 API 를 사용하려는 파일 에서 실험적 가져오기를 사용해야 합니다.

import "realm/experimental/base-url";

app.updateBaseUrl() 메서드는 별도로 가져와야 하는 실험적 모듈에 있습니다. 이 모듈에서 적절한 유형을 가져오려면 tsconfig.json 파일에서 다음 필드를 설정해야 합니다.

{
"target": "es2022",
"module": "node16",
"moduleResolution": "node16",
// ...
}

사용자로 로그인하고 동기화된 데이터베이스 를 연 후 baseURL 를 변경하려면 앱 에서 클라이언트 재설정 을 수행해야 합니다. 코드에서 다음 단계를 수행합니다.

  1. 동기화 세션을 일시 중지합니다.

  2. app.updateBaseUrl() 메서드를 호출하여 baseURL 를 업데이트합니다.

  3. 인증 흐름을 다시 고 (Go) 하여 새 baseURL 을(를) 통해 사용자를 로그인 합니다.

  4. 새 서버 에서 데이터를 가져오는 동기화된 데이터베이스 를 엽니다.

사용자가 새 서버 를 인증하고 연결하려면 서버 와 클라이언트 가 모두 온라인 여야 합니다. 서버 가 온라인 가 아니거나 클라이언트 가 네트워크에 연결되어 있지 않으면 사용자는 데이터베이스 를 인증하고 열 수 없습니다.

돌아가기

Atlas App Services