连接到 Atlas App Services 后端 - Node.js SDK
App 客户端是与 Atlas App Services 后端的接口。 它提供对身份验证功能和同步管理的访问。
开始之前
访问应用程序客户端
要从客户端连接到App Services后端,您需要创建一个配置对象。 然后,将该配置对象传递给 Realm.App()
实例。
您必须包含App Services App的id
字段和 App ID ,您可以在App Services用户界面中找到它们。
// Initialize your App. const app = new Realm.App({ id: "<yourAppId>", });
您可以创建多个应用客户端实例以连接多个应用。 股票相同 App ID的所有 App客户端实例使用相同的根本的连接。
重要
初始化应用后更改应用配置
在版本12.6.0中进行了更改: baseUrl
未缓存在应用配置中。
初始化 App客户端时,会在内部缓存配置。 尝试在同一进程中关闭并重新打开配置已更改的应用无效。 客户端继续使用缓存的配置。
从 Node.js SDK 版本12.6.0开始,不会缓存AppConfiguration
中的baseUrl
。 这意味着您可以更改baseUrl
,应用客户端将使用更新后的配置。 在早期 SDK 版本中,对缓存的应用配置中的baseUrl
进行更改无效。
检索应用程序客户端的实例
要从应用程序中的任何位置检索 App Client 实例,请调用Realm.App.getApp()并传入您的App ID 。
const app = Realm.App.getApp("<yourAppId>");
为 App Client 配置超时
您可以在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 枚举的值来确定加密行为。
要加密应用元数据,请执行以下操作:
从
Realm
导入MetadataMode
并导入其他依赖项: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);