React Native
...
Parse SDK (REST)
Data objects

React Native 中 Parse SDK 的多对多数据关联指南

8min

多对多关系

介绍

在许多后端的核心,您会发现存储数据的能力。使用Parse,您可以存储数据对象并建立它们之间的关系。数据关系标准化了每个数据对象与其他对象的关系或关联。这可以在构建和运行复杂查询时为您提供额外的能力。主要有三种关系类型:

  • 一对多, 一个对象可以与多个其他对象相关联;
  • 一对一, 在两个对象之间建立直接关系;
  • 多对多, 可以在多个对象之间创建许多复杂的关系。

在本指南中,我们将重点关注多对多关系。这些关系在包含创作内容的应用程序中很常见,例如博客和新闻源,因为作者和类别标签可以互换并优化以快速查询。数据存储后端通常会要求明确声明这些关联,甚至要求您自己创建关系表以管理它们的连接。Parse为您自动完成这一切,消除了在构建数据关系时出错的可能性,并加快了您的应用程序建模过程。

在Parse中创建多对多关系有两种方法。第一种使用Parse.Object 关系,这在创建和查询时间上是最快的。第二种是使用数组,这可能会导致查询时间变慢,具体取决于它们的大小。由于这个性能问题,从现在开始我们将仅使用关系示例。

在本指南中,您将实现一个包含三种主要数据关联的React Native图书注册应用程序。您将学习如何使用Back4App和React Native创建和查询多对多数据关系。

您可以随时通过我们的GitHub仓库访问此项目,以查看样式和完整代码。

先决条件

要完成本教程,您需要:

  • 一个创建的 React Native 应用程序,并且 连接到 Back4App.
  • 如果您想测试/使用本指南提供的屏幕布局,您应该设置react-native-paper.

目标

在 React Native 中使用 Parse 在现实场景中执行和演示多对多数据库关系。

1 - 理解书籍类

由于在本指南中我们将使用一本书的注册应用示例,您需要首先了解该数据库中对象关系的布局。您将使用的主要对象类是 书籍 类,它将存储注册中的每本书条目。这是其他四个对象类:

  • 出版社: 书籍出版社名称,与书籍
  • 类型: 书籍类型,与书籍. 请注意,在本示例中我们将考虑一本书只能有一个类型;
  • 作者: 书籍作者,与书籍, 因为一本书可以有多个作者,而一个作者也可以有多本书;
  • ISDB: 书籍的ISDB识别号码,与书籍, 因为这个号码对于每本书都是唯一的。

这是这些数据库表的可视化表示:

Document image


为了简单起见,我们将假设每个对象类只有一个字符串类型的 名称 属性 (标题 对于 书籍),除了任何额外的关系属性。

2 - 创建一对多关系

在进入这一步之前,我们建议您克隆并运行 React Native 库应用示例 (JavaScript 示例库, TypeScript 示例库)。该应用程序有两个主要屏幕:一个负责列出注册的书籍,另一个负责创建新书。在书籍注册表单中,有直接链接到其他相关对象,因此当用户选择出版商或类型选项时,表单字段将包含完整的 Parse.Object 实例。

Document image


让我们来看看提交此表单时调用的书籍创建方法:

JavaScript
TodoList.tsx


看看 bookAuthorsObjects 是如何设置为新的书籍 Parse.Object 实例的。要创建多对多关系,您首先需要创建一个新的 Parse.Object.relation,然后将相关对象逐个添加到其中,或者通过传递一个 Parse.Object 的数组来添加,使用 Parse.Object.relation.add 方法。Parse 将在您的数据库中创建一个关系类型列,并且还会创建一个关系表。Parse 还将在仪表板的字段列中为方便访问此新表创建一个链接。

Document image


请注意,一旦创建了仪表板,您还可以管理对象并向您的关系中添加新对象,因此在开发应用程序时请记住这个快捷方式。

3 - 查询多对多关系

从多对多相关对象查询中检索结果需要一些额外的步骤,与常规查询相比。请查看书籍注册列表屏幕中的查询功能:

JavaScript
TodoList.tsx


在这种情况下,要查询与特定作者相关的任何书籍,您需要执行一个 Parse.Query.equalTo 方法,传递 Parse.Object 实例作为参数。查询后,Parse 不会存储来自多对多关系字段的 Parse.Object 实例,只会存储对相关类名的引用,例如 {"__type": "Relation", "className": "Author"}. 要从这些对象实例中检索和显示数据,您需要创建一个关系并再次查询,将结果存储在您自己的对象数组中。之后,您可以遍历对象数组并使用 Parse.Object.get 方法来检索作者的名字。以下是使用这些程序的列表屏幕的样子:

Document image


结论

在本指南的最后,您学习了如何在 React Native 中创建和查询 Parse 的多对多关系。在下一个指南中,我们将向您展示如何进行一对一查询和关系。