[!NOTE] Realm 现已更名为 Atlas Device SDK —了解更多
Realm 是一种移动数据库,可直接在手机、平板电脑或可穿戴设备中运行。 该项目托管 Realm 的 JavaScript 和 TypeScript 实现。 目前,我们支持 React Native(iOS 和 Android 上的 JSC 和 Hermes)、Node.js 和 Electron(Windows、MacOS 和 Linux 上)。
Atlas Device SDKs是特定于语言和平台的 collection,每个 SDK 都包含一套应用开发工具,针对移动和边缘设备上的数据访问和持久性进行了优化。使用 SDK 构建数据驱动的移动、边缘、Web、桌面和物联网(IoT)应用程序。
将 Realm 数据库视为 Atlas Device SDKs 的持久层可能会有所帮助。
请参阅我们的文档中的详细说明,了解如何使用适用于 Node.js的Atlas Device SDK 和适用于 React Native 的 Atlas Device SDK 。 请注意,目前仅支持 Node.js 18 或更高版本。 对于 React Native 用户,我们提供了一个兼容性矩阵,显示了支持哪些版本。
有关适用于 React Native 的 Atlas Device SDK 的文档,请访问mongodb.com/zh-cn/docs/atlas/device-sdks/sdk/react-native/ 。 有关适用于 Node.js 的 Atlas Device SDK 的文档,请访问mongodb.com/zh-cn/docs/atlas/device-sdks/sdk/node/ 。
API 参考文档位于mongodb.com/zh-cn/docs/realm-sdks/js/latest/ 。
如果您正在使用 React Native,另请查看@realm/react
的 README,其中提供了 React 钩子,以便更轻松地使用 Realm。
TypeScript是纯 JavaScript 的流行替代方案,因为它提供静态类型。 我们的 TypeScript 支持包括两部分
@realm/babel-plugin
,用于将 TypeScript 类转换为 Realm 模式。 模型类的示例如下:class Task extends Realm.Object<Task, "description"> {
_id = new Realm.BSON.ObjectId();
description!: string;
@index
isComplete = false;
static primaryKey = "_id";
constructor(realm, description: string) {
super(realm, { description });
}
}
适用于 React Native 的 Atlas Device SDK 提供对象持久性和持久对象的高级查询功能。 使用@realm/react
可以更轻松地与 React Native 集成。
我们提供 TypeScript 模板来帮助您开始使用 Realm。 点击所需模板的链接,然后按照其中的说明快速启动并运行。
有关更多详细信息,请参阅CONTRIBUTING.md !
Debug with Chrome
。有关从源代码构建 SDK 的说明,请参阅Building.md文件。
安装并运行 Realm 后,有可能会遇到错误Could not find the Realm binary
。 以下是一些有助于解决此问题的提示。
请咨询我们的COMPATIBILITY.md
,确保您运行的realm
版本与受支持的node
、 react-native
或expo
版本兼容。
通常,当 Pod 依赖项尚未更新时,会出现此错误。 尝试运行以下命令:
npx pod-install
如果仍然没有帮助,则可能是您的构建或 pod 依赖项存在一些缓存错误。 可以使用以下命令安全地清除这些缓存:
rm -rf ios/Pods
rm ios/Podfile.lock
rm -rf ~/Library/Developer/Xcode/DerivedData
然后,重新安装 Pod 并重试。 如果仍然不起作用,请确保prebuilds/apple/realm-core.xcframework
目录存在并包含适用于您的平台和架构的二进制文件。 如果缺失,请尝试重新安装realm
npm包和 CocoaPods。
安装realm
且未执行全新构建时,可能会出现这种情况。 可以使用以下命令清除缓存:
cd android
./gradlew clean
然后,尝试为 Android 重新构建。 如果仍然遇到问题,请确保node_moduels/realm/react-native/android/src/main/jniLibs
包含适用于您的架构的 域 二进制文件。如果缺失,请尝试重新安装realm
npm 包。
如果您正在使用 Expo,一个常见的陷阱是未安装expo-dev-client
并使用特定于开发客户端的脚本在 Expo 中构建和运行您的 React Native 项目。 开发客户端允许您创建 Expo Go 的本地版本,其中包括 Realm 等第三方库。 如果您想在 Expo 项目中使用realm
,以下步骤可能会有所帮助。
expo-dev-client
:npm install expo-dev-client
npx expo run:ios
npx expo run:android
npx expo start --dev-client
运行npm install realm
时,检测到的架构的域二进制文件会下载到node_modules/realm/prebuilds
中。如果此目录缺失或为空,请确保安装时没有报告任何网络问题。
异步向 Realm 提交安装信息。
我们为什么要这样做? 简而言之,因为它有助于我们为您打造更好的产品。 这些数据不会识别您、您的雇主或您的应用的个人身份,但有助于我们了解您使用的语言、您的目标 Node.js 版本等。 掌握这些信息将有助于安排时间优先顺序,添加新功能和弃用旧功能。 收集匿名应用程序路径和匿名机器标识符是我们准确计算其他指标实际使用情况的唯一方法。 如果我们没有办法对报告的信息去重,那么报告就毫无用处,因为单个开发者npm install
(运行同一应用 10 次)报告的内容比另一个仅安装一次应用的开发者多 10 倍,从而使数据全部但没用。 除非有必要,否则没有人喜欢共享数据,我们明白这一点,并且我们已经就是否添加此内容进行了很长时间的争论。 如果您确实觉得有必要不将此数据发送回 Realm,那么您可以设置一个名为REALM_DISABLE_ANALYTICS
的环境变量。
目前已报告以下信息:
此外,我们无条件地将各种常量写入可能在运行时使用的文件。
该项目遵守MongoDB 行为准则。 参与即表示您遵守本准则。 请将不可接受的行为发送至Community-conduct@mongodb.com 。
Realm JS 和Realm Core根据 Apache 许可证 2.0 发布。
如果您使用 Realm 并对它感到满意,我们只希望您考虑发送一条提及@realm的推文来分享您的想法
如果您不喜欢它,请告诉我们您希望改进什么,以便我们修复它!
使用contrib.rocks制作。
使用TypeDoc生成