完全脱机工作的领域(从不在线) [英] Realm with fully offline work (never online)
问题描述
我正在尝试了解MongoDB的每个元素是如何工作的,但是我真的很困惑脱机是如何处理的。
我读到这个:
Realm的移动数据库是CoreData和SQLite的开源、开发人员友好的替代方案。几分钟内启动,几小时内移植您的应用程序,为您节省数周的工作时间。
然后这部分提到脱机部分:
专为脱机使用而设计
这是否意味着领域可以用作移动应用中的完全脱机数据库?
如果我理解正确,此数据库的工作方式将类似于Android Room,在Android Room中,我使用对象/文档存储数据。
因为当我转到"让我们开始&q;"部分时,我会被重定向到此处:
https://docs.mongodb.com/realm/get-started/introduction-mobile/
阅读本部分的位置:
开始之前,您需要一个MongoDB Atlas帐户。您可以在Atlas入门文档中了解有关创建Atlas帐户的详细信息
所以我的第一个问题:我为什么需要Atlas帐户?我知道Atlas将在云中有一个MongoDB数据库。如果我要使用脱机数据库,为什么需要此数据库?
我猜本教程想要展示所有工具协同工作。所以也许这一步可以跳过。然后转到Reaction Native教程,我看到这一部分:
https://docs.mongodb.com/realm/tutorial/react-native/#std-label-react-native-tutorial
连接到您的MongoDB领域应用
若要使应用程序与您的后端一起工作,您首先需要实例化领域应用程序。领域应用程序是MongoDB领域后端的接口。导航到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;
}
代码强制我指明我在领域控制台中获得的AppID。
所以我的第二个问题:如何使此部件脱机?我应该直接跳过APPID吗?这行得通吗?
这是否可能,或者领域是否真的不适合完全脱机工作?
推荐答案
I'm really confused about how the offline is handled.
领域是离线的第一个数据库,所有数据都存储在本地文件中,如果您使用的是MongoDB领域同步,则稍后再将数据同步到服务器
这是否意味着可以将领域用作完全脱机 移动应用中的数据库?
当然。如前所述,数据存储在文件中。
所以我的第一个问题:为什么我需要一个Atlas帐户?
脱机使用不需要Atlas帐户。您需要设置一个帐户才能访问MongoDB领域控制台并配置领域应用以进行同步
这部分代码似乎非常重要:
您问题中的代码在您使用MongoDB领域同步时使用。脱机使用不需要。
那么我的第二个问题是:如何使此部件脱机?我是不是应该 跳过APPID吗?这行得通吗?
脱机使用时不需要该代码。
这是否可能,或者领域并不真正适合完全脱机 工作?
它非常适合仅脱机工作,如果您想过渡到联机模式,它也非常适合脱机工作。
如果您只想脱机使用领域,请参阅文档Open a Local (Non-Synced) Realm,其中显示了
要打开本地(非同步)领域,请将Configuration()对象传递给 Realm.open()或new domain()。下面的示例创建一个 具有定义本地文件的Path属性的Configuration对象 存储数据的路径。
const config = {
schema: [schemas.TaskSchema, schemas.UserSchema, schemas.ProjectSchema],
path: "./myrealm/data"
};
const realm = await Realm.open(config);
一旦有了领域变量,您就可以在本地使用领域:
// Query realm for all instances of the "Task" type.
const tasks = realm.objects("Task");
这篇关于完全脱机工作的领域(从不在线)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!