Atlas App Services 백엔드에 연결 - Node.js SDK
이 페이지의 내용
앱 클라이언트는 Atlas App Services 백엔드에 대한 인터페이스입니다. 인증 기능 및 동기화 관리에 액세스할 수 있습니다.
시작하기 전에
앱 클라이언트에 액세스
클라이언트 에서 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 열거형 값을 사용하여 암호화 동작을 결정합니다.
앱 메타데이터를 암호화하려면 다음을 수행합니다.
MetadataMode
Realm
에서 를 가져오고 다른 종속성을 가져옵니다:import Realm, { BSON, MetadataMode } from "realm"; import Realm, { AppConfiguration, BSON, MetadataMode, Configuration, } from "realm"; metadata
속성을 포함하는 앱 구성 객체를 만듭니다.metadata.mode
을MetadataMode.Encryption
로 설정합니다.암호화에 사용할 키로
metadata.encryptionKey
를 설정합니다.앱 구성 객체를
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);
특정 MongoDB 서버에 연결
기본적으로 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);
런타임 중 다른 MongoDB 서버에 연결
버전 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";
Typescript 실험적 용 구성 API
app.updateBaseUrl()
메서드는 별도로 가져와야 하는 실험적 모듈에 있습니다. 이 모듈에서 적절한 유형을 가져오려면 tsconfig.json
파일에서 다음 필드를 설정해야 합니다.
{ "target": "es2022", "module": "node16", "moduleResolution": "node16", // ... }
로그인한 사용자로 서버 변경
사용자로 로그인하고 동기화된 데이터베이스 를 연 후 baseURL
를 변경하려면 앱 에서 클라이언트 재설정 을 수행해야 합니다. 코드에서 다음 단계를 수행합니다.
app.updateBaseUrl()
메서드를 호출하여baseURL
를 업데이트합니다.인증 흐름을 다시 고 (Go) 하여 새
baseURL
을(를) 통해 사용자를 로그인 합니다.새 서버 에서 데이터를 가져오는 동기화된 데이터베이스 를 엽니다.
사용자가 새 서버 를 인증하고 연결하려면 서버 와 클라이언트 가 모두 온라인 여야 합니다. 서버 가 온라인 가 아니거나 클라이언트 가 네트워크에 연결되어 있지 않으면 사용자는 데이터베이스 를 인증하고 열 수 없습니다.