具有完全脱机工作的领域(从不联机)



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

转到:https://realm.io/

我读了这个:

Realm的移动数据库是一个开源的,开发人员友好的CoreData和SQLite替代品。在几分钟内开始,在几个小时内移植你的应用,并节省自己数周的工作。

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

专为离线使用

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

如果我理解正确,这个数据库将工作类似于Android房间,我使用对象/文档存储数据。

因为当我进入"Let's start"节,我被重定向到这里:

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

我在哪里读到这部分:

在开始之前,您需要一个MongoDB Atlas帐户。您可以在Atlas入门文档

中了解更多关于创建Atlas帐户的信息。

我的第一个问题是为什么我需要阿特拉斯账号?我知道Atlas是在云中有一个MongoDB数据库。如果我想使用离线数据库,为什么我需要这个?

我猜这个教程想要展示所有的工具一起工作。也许这一步可以跳过。然后转到React Native Tutorial,我看到了这部分:

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

连接到您的MongoDB Realm应用程序

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

这部分代码看起来非常重要:

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

代码迫使我指出我在Realm控制台中获得的AppId。

所以我的第二个问题是这个零件怎么下线?我应该跳过appId吗?这能行吗?

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

I'm really confused about how the offline is handled.

Realm是一个离线的第一个数据库,所有的数据都存储在本地的一个文件,然后同步到服务器以后,如果你使用MongoDB Realm sync

这是否意味着Realm可以作为一个完全脱机的移动应用程序中的数据库?

确定。如前所述,数据存储在文件中。

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

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

这部分代码看起来非常重要:

在你的问题的代码是使用时,你正在使用MongoDB Realm同步。仅离线使用不需要。

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

你不需要离线使用的代码。

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

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

如果您想离线使用Realm,请参阅文档。打开一个显示

的本地(非同步)Realm

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

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

一旦您有了realm变量,您就可以在本地使用realm了:

// Query realm for all instances of the "Task" type.
const tasks = realm.objects("Task");

最新更新