• 日常搜索
  • 百度一下
  • Google
  • 在线工具
  • 搜转载

如何在Android应用程序中使用MongoDB Stitch

使用mongodb Atlas,只需在浏览器中单击几下,即可在云中启动并运行您自己的 MongoDB 集群通过使用它,您可以构建可以高效地为数百万用户服务的 androidios 应用程序但是,您仍然需要一个可以充当用户设备和集群之间的中介的后端服务器您需要它来执行安全策略、为您的 CRUD 操作添加抽象级别、安排作业以及许多其他此类重要任务。

如何在Android应用程序中使用MongoDB Stitch  第1张MongoDB 使用 MongoDB Atlas Ashraff Hathibelagal 在云中创建数据库集群

MongoDB Stitch是一个强大的无服务器平台,可以满足您所有的后端需求。除了为 MongoDB Atlas 集群中的数据提供细粒度的访问控制之外,它还提供了一个基于 javascript 的计算环境,您可以使用它来执行各种服务器端操作。在本教程中,我将向您展示如何在 Android 应用程序中使用该平台。

先决条件

要继续学习,您需要:

  • 一个MongoDB Atlas帐户

  • 最新版本的Android Studio

  • 运行 Android 5.0 或更高版本的设备或模拟器

1.创建一个MongoDB Atlas集群

MongoDB Stitch 旨在与 MongoDB Atlas 集群一起使用。您可以随意使用已有的集群,但我建议您为本教程创建一个新集群。

首先登录到您的 MongoDB Atlas 帐户并按下Build a New Cluster 按钮。

如何在Android应用程序中使用MongoDB Stitch  第2张

在下一个屏幕中,它会询问您有关新集群的配置详细信息,选择任何云提供商、提供 M0 免费层集群的区域,然后按创建集群 按钮。

如何在Android应用程序中使用MongoDB Stitch  第3张

几分钟后,您将拥有一个名为Cluster0的全新免费层集群。

2.创建一个 MongoDB Stitch 应用程序

要将 Stitch 应用程序与您的集群关联,请单击Link Application 链接。在接下来打开的页面中,按创建新应用程序 按钮。

您现在可以为新的 Stitch 应用程序输入所需的名称。完成此操作后,请确保选择了正确的集群并按创建 按钮。

如何在Android应用程序中使用MongoDB Stitch  第4张

此时,您的 Stitch 应用程序(具有非常大的免费配额)已准备就绪。

如何在Android应用程序中使用MongoDB Stitch  第5张

该应用程序具有您在开发 Android 应用程序时需要的唯一 ID。您可以通过转到客户端 部分并打开java (Android) 选项卡来查看它是什么。

如何在Android应用程序中使用MongoDB Stitch  第6张

3.配置用户和规则

通过使用 MongoDB Stitch,您可以安全地编写 Web 和移动前端代码来与您的 MongoDB Atlas 集群进行交互。这是可能的,因为您不必在代码中包含包含数据库服务器地址、用户名和密码的连接字符串。

Stitch 应用程序的经过身份验证的最终用户会自动访问您的数据库。但是,使用一个或多个规则,您可以精确控制他们可以查看或修改哪些文档和字段

为了对您的用户进行身份验证,Stitch 提供了多种身份验证机制,包括匿名身份验证、电子邮件/密码身份验证以及使用流行的联合身份提供商进行身份验证。在本教程中,我们将使用匿名身份验证。要进行设置,请转到“用户 ”部分并打开“提供者” 选项卡。

如何在Android应用程序中使用MongoDB Stitch  第7张

接下来,选择允许用户匿名登录 选项,启用它,然后按保存 按钮。

假设我们想让我们的匿名用户只使用他们拥有的文档。要创建这样的规则,请转到规则 部分。

因为规则适用于集合,所以现在按添加集合 按钮创建一个新集合。在出现的表单中,为其命名并指定它必须属于哪个数据库。完成后,选择用户只能读写自己的数据 规则模板。

如何在Android应用程序中使用MongoDB Stitch  第8张

选择模板后,系统会提示您指定文档中的字段名称,您将在其中存储用户自动生成的 Stitch auth ID。Stitch 将在确定文档是否属于用户时使用此字段。假设名称是user_id 并提交表单。

在接下来打开的页面中,您现在可以确认只有集合中文档的所有者才能对其执行读写操作。

如何在Android应用程序中使用MongoDB Stitch  第9张

4.准备Android项目

为了能够在您的 Android Studio 项目中使用 Stitch,您必须将其官方 SDK 作为 implementation 依赖项添加到app 模块的build.gradle 文件中。

implementation 'org.mongodb:stitch-android-sdk:4.0.5'


此外,您必须在项目中提及 Stitch 应用程序的唯一 ID。因此,转到res/values/strings.xml 文件并将其添加为<string> 标签。

<string name="my_app_id">mystitchapp-qwern</string>


5.建立连接

通过StitchAppClient 该类的实例,您可以轻松使用 Stitch 平台提供的所有功能。要初始化initializeStitchAppClient,您必须调用该 initializeDefaultAppClient() 方法并将 Stitch 应用程序的 ID 传递给它。这只需在您的应用程序中执行一次,最好在应用程序启动时立即执行。

准备好后,您可以调用该getDefaultAppClient() 方法来获取对客户端的引用。您可以将以下代码添加到活动的onCreate() 方法中,向您展示如何:

Stitch.initializeDefaultAppClient(
    resources.getString(R.string.my_app_id)
)

val stitchAppClient = Stitch.getDefaultAppClient()


除非您的用户登录到您的 Stitch 应用程序,否则您将无法在 MongoDB Atlas 集群上执行任何有用的操作。因此,您现在必须通过调用loginWithCredential() 异步运行并返回一个 Task 对象的方法来登录用户。此外,由于您在 Stitch 的 Web 控制台中选择了匿名身份验证作为身份验证机制,因此请确保将 AnonymousCredential 类的实例传递给该方法。

stitchAppClient.auth.loginWithCredential(AnonymousCredential())
        .addOnSuccessListener { 
            // More code here
        }


此时,如果您运行应用程序,Stitch 会自动将您注册为新用户,并将您登录到应用程序。此外,如果您返回 Stitch Web 控制台并打开“用户 ”部分,您将能够看到新条目已添加到用户列表中。

如何在Android应用程序中使用MongoDB Stitch  第10张

6.插入文件

成功验证后,您可以继续获取 RemoteMongoClient 该类的实例以开始与您的 MongoDB Atlas 集群进行交互。为此,您可以调用该getServiceClient() 方法并指定您想要的服务名称为“ mongodb-atlas”。就是这样:

val mongoClient = stitchAppClient.getServiceClient(
                    RemoteMongoClient.factory,
                    "mongodb-atlas"
                  )


请记住,由于您在本教程前面创建的规则,您的用户只能对他或她自己的数据执行读写操作。此外,您的用户仅限于使用您在 Stitch Web 控制台中提到的数据库和集合。

要获取对数据库的引用,请调用该getdatabase() 方法并将其名称传递给它。同样,要获取对集合的引用,请调用getCollection() 返回RemoteMongoCollection 对象的方法。

val myCollection = mongoClient.getDatabase("test")
                              .getCollection("my_collection")


当然,您添加到集合中的内容取决于您。举个例子,假设我们要添加包含用户打开应用程序的所有时间的时间戳的文档。

要创建一个新的BSON 文档,您必须使用该类的构造函数Document 。因为Document 对象与地图非常相似,您可以使用[] 运算符向它们添加键值对。

以下代码向您展示了如何创建一个新文档并为其添加时间戳:

val myFirstDocument = Document()
myFirstDocument["time"] = Date().time


除了您的数据之外,您的所有文档都必须包含用户的 Stitch 身份验证 ID。没有它,您的插入操作将失败。要获取身份验证 ID,您可以直接使用 on-success ***器中可用id 的隐式对象的属性。it

myFirstDocument["user_id"] = it.id


您现在可以通过调用该insertOne() 方法来插入文档。(您可以在 Java 驱动程序的 MongoDB 文档中阅读有关该insertOne()方法和其他写入操作的信息。)因为它是异步运行的,所以您需要另一个 on-success ***器来检查插入操作是否成功。myCollection.insertOne(myFirstDocument)
           .addOnSuccessListener {
               Log.d("STITCH", "One document inserted")
           }


如果您现在运行应用程序并检查 Android Studio 的Logcat 面板,您应该能够看到如下所示的日志条目:

如何在Android应用程序中使用MongoDB Stitch  第11张    

7.运行查询

通过调用对象的find() 方法RemoteMongoCollection ,您可以创建查询。(您可以在 MongoDB Java 驱动程序文档中了解有关find()和其他查询操作的更多信息。)该方法返回一个RemoteFindIterable 对象,您可以在该对象上调用更多方法,例如sort() 和limit() 来管理查询结果。例如,以下代码创建一个查询来查找用户创建的最后五个文档:

.sort( Document("time", -1) )
                       .limit(5)


要实际运行查询,您可以调用它的into() 方法,该方法需要一个列表作为参数。正如它的名字所暗示的那样,它将查询的结果(只是 Document 对象)加载到您传递给它的列表中。它异步运行,因此您只能在 on-success ***器中开始使用列表。

val result = mutableListOf<Document>()

query.into(result).addOnSuccessListener {
    // More code here    
}


现在,为了简单起见,让我们使用一个TextView 小部件来显示查询结果。因此,将以下代码添加到您的活动的布局 XML 文件中:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/viewer"
    />


回到 on-success ***器内部,您现在可以遍历列表并创建一个包含所有时间戳的串联字符串。或者,您可以将时间戳传递给类的 getRelativeDateTimeString() 方法DateUtils 以使其更具可读性。字符串准备好后,您可以直接将其分配给TextView 小部件。就是这样:

val output = StringBuilder("You opened this app: \n\n")

// Loop through the results
result.forEach {
    output.append(
        DateUtils.getRelativeDateTimeString(
            this@MainActivity,            
            it["time"] as Long, // Get value of 'time' field
            DateUtils.SECOND_IN_MILLIS,     
            DateUtils.WEEK_IN_MILLIS,
            0
        )
    ).append("\n")
}

// Update the TextView
viewer.text = output


如果您再次运行该应用程序,您现在应该在您的设备上看到如下内容:

如何在Android应用程序中使用MongoDB Stitch  第12张    

结论

MongoDB Stitch 是一个无服务器平台,可用于创建可轻松扩展以处理大量用户数据的现代应用程序。在本教程中,您学习了如何使用它来匿名验证您的 Android 应用程序的用户,并允许他们在您的 MongoDB Atlas 集群上安全地执行读写操作。

文章目录
  • 先决条件
  • 1.创建一个MongoDB Atlas集群
  • 2.创建一个 MongoDB Stitch 应用程序
  • 3.配置用户和规则
  • 4.准备Android项目
  • 5.建立连接
  • 6.插入文件
  • 7.运行查询
  • 结论