完全离线工作的领域(从不在线)

Mar*_*o L 10 realm mongodb react-native

我试图了解 mongoDB 的每个元素是如何工作的,但我真的很困惑如何处理离线。

\n

前往: https: //realm.io/

\n

我读到了这个:

\n
\n

Realm\xe2\x80\x99s 移动数据库是 CoreData 和 SQLite 的开源、开发人员友好的替代方案。只需几分钟即可启动,几小时内即可移植您的应用程序,并节省数周的工作时间。

\n
\n

然后这部分提到了离线部分:

\n
\n

专为离线使用而设计

\n
\n

这是否意味着Realm可以在移动应用程序中用作完全离线的数据库?

\n

如果我理解正确的话,这个数据库的工作方式与 Android Room 类似,我使用对象/文档存储数据。

\n

因为当我转到“让我们开始”部分时,我被重定向到此处:

\n

https://docs.mongodb.com/realm/get-started/introduction-mobile/

\n

我在哪里读到这部分:

\n
\n

在开始之前,您需要一个 MongoDB Atlas 帐户。您可以在 Atlas 入门文档中了解有关创建 Atlas 帐户的更多信息

\n
\n

所以我的第一个问题:为什么我需要 Atlas 帐户?我理解Atlas就是在云端有一个MongoDB数据库。如果我想使用离线数据库,为什么需要这个?

\n

我想本教程想要展示所有工具的协同工作。所以也许可以跳过该步骤。但后来转到 React Native 教程,我看到了这部分:

\n

https://docs.mongodb.com/realm/tutorial/react-native/#std-label-react-native-tutorial

\n
\n

连接到您的 MongoDB Realm 应用程序

\n
\n
\n

要让应用程序与您的后端一起工作,您首先需要实例化 Realm 应用程序。Realm 应用程序是 MongoDB Realm 后端的接口。导航到 getRealmApp.js 文件并完成 getRealmApp()

\n
\n

这部分代码似乎非常重要:

\n
// Returns the shared instance of the Realm app.\nexport function getRealmApp() {\n  if (app === undefined) {\n    const appId = "<your Realm app ID here>"; // Set Realm app ID here.\n    const appConfig = {\n      id: appId,\n      timeout: 10000,\n      app: {\n        name: "default",\n        version: "0",\n      },\n    };\n    app = new Realm.App(appConfig);\n  }\n  return app;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

该代码迫使我指示我在领域控制台中获得的 AppId。

\n

所以我的第二个问题:如何使这部分离线?我应该跳过 appId 吗?这行得通吗?

\n

这是可能的还是 Realm 真的不适合完全离线工作吗?

\n

Jay*_*Jay 10

I'm really confused about how the offline is handled.
Run Code Online (Sandbox Code Playgroud)

Realm 是一个离线的第一个数据库,所有数据都存储在本地文件中,如果您使用 MongoDB Realm Sync,则稍后同步到服务器

这是否意味着Realm可以在移动应用程序中用作完全离线的数据库?

一定。如上所述,数据存储在文件中。

所以我的第一个问题:为什么我需要 Atlas 帐户?

您不需要 Atlas 帐户即可离线使用。您需要设置一个帐户才能访问 MongoDB Realm 控制台并配置 Realm 应用程序进行同步

这部分代码似乎非常重要:

当您使用 MongoDB Realm Sync 时,将使用您问题中的代码。仅离线使用时不需要它。

所以我的第二个问题:如何使这部分离线?我应该跳过 appId 吗?这行得通吗?

您不需要该代码仅用于离线使用。

这是可能的还是 Realm 真的不适合完全离线工作吗?

它非常适合仅离线工作,如果您想过渡到在线模式,它也非常适合。

如果您想离线使用 Realm,请参阅文档Open a Local (Non-Synced) Realm,其中显示

要打开本地(非同步)领域,请将 Configuration() 对象传递给 Realm.open() 或 new Realm()。以下示例创建一个具有路径属性的 Configuration 对象,该属性定义用于存储数据的本地文件路径。

const config = {
   schema: [schemas.TaskSchema, schemas.UserSchema, schemas.ProjectSchema],
   path: "./myrealm/data"
};
const realm = await Realm.open(config);
Run Code Online (Sandbox Code Playgroud)

一旦你有了领域变量,你就可以在本地使用领域:

// Query realm for all instances of the "Task" type.
const tasks = realm.objects("Task");
Run Code Online (Sandbox Code Playgroud)