首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从MongoDB (Swift)连接到iOS

如何从MongoDB (Swift)连接到iOS
EN

Stack Overflow用户
提问于 2020-06-14 16:51:34
回答 3查看 2.7K关注 0票数 3

我已经使用iOS开发了一个RealmSwift应用程序。到目前为止这还不错。现在,随着我越来越接近发布到App,我想设置一些云配置,以便能够连接到云数据库,但我只是完全搞糊涂了。

几周前,我把领域云作为一种选择。现在我只看到了MongoDB领域--或者类似的东西。我深入研究了一下,发现有三个组件:领域数据库、领域同步和Mongo。

如果我的理解是正确的,我必须创建一个Atlas集群,我的领域数据库将在其中托管,并能够连接和同步。我说的对吗?

我的主要问题是我不知道如何将它连接到我现有的代码。我不希望用户身份验证或来自MongoDB的任何东西,我有我自己的,我基本上只有一个DB,我想同步和连接到它。因此,目前在我通常使用的代码中:

代码语言:javascript
复制
let realm = try! Realm()
try! realm.write {
   ...
}

如何更新它以使用阿特拉斯云中的MongoDB?我看了他们的“教程”,但我还是太困惑了。

我看到了一个Realm(configuration: Realm.Configuration) init函数,但是如果我要使用这个函数,我应该如何获得一个Realm.Configuration对象?

此外,分区键意味着什么?

非常感谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-15 22:04:50

你的困惑是有道理的。文档和教程仍然是一项正在进行的工作,而且有点脱节。我认为随着时间的推移,情况会有所改善。

因此,对于完整的教程来说,这不是一个很好的地方,但是这里有一个非常高层次的概述。

指向教程的链接- iOS Swift教程

通过Cocoapods安装

1)在MongoDB控制台中创建集群

2)在该集群中,您正在创建一个领域“应用程序”

3)在这个领域中,你将设置“应用程序”:

  • 同步(开发模式)
  • 用户->提供者->电子邮件/密码认证

您的应用程序将有一个AppId,它可以在阿特拉斯控制台的左边,右边的应用程序名称(这是一个文档按钮,你可以点击复制)。

然后,在您的XCode领域项目中,您将使用cocoapods来安装RealmSwift。

现在请回答你的问题:

如何将其连接到我现有的代码。

添加一个结构,这是到Atlas领域项目的连接字符串。

导入RealmSwift

代码语言:javascript
复制
struct Constants {
    // Set this to your Realm App ID found in the Realm UI.
    static let REALM_APP_ID = "your app id"
}

然后,当您想进行身份验证时,您将执行以下操作

代码语言:javascript
复制
let app = RealmApp(id: Constants.REALM_APP_ID)
app.login(withCredential: AppCredentials(username: username, password: password)) { user, error in

一旦您通过身份验证,要访问领域,请使用以下内容

代码语言:javascript
复制
guard let user = app.currentUser() else {
   fatalError("Must be logged in to access this view")
}

let realm = try! Realm(configuration: user.configuration(partitionValue: user.identity!))
票数 0
EN

Stack Overflow用户

发布于 2020-06-14 16:54:50

除了iOS应用程序中的嵌入式数据库之外,我从来没有使用过领域。如果您需要在服务器端存储某些内容,您应该实现一个API,它可以对您的MongoDB (或您使用的任何数据库)进行写入。将iOS应用程序直接连接到服务器端数据库对我来说似乎是一种反模式。

票数 0
EN

Stack Overflow用户

发布于 2020-06-14 17:01:46

领域同步根据需要连接到Atlas部署,以同步数据。我的理解是,您不需要在代码中直接连接到Atlas。

文档提供了一些信息,下面有几页示例代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62375536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档