Backendless iOS:中间 table 介于两个 table 之间
Backendless iOS: intermediate table between two tables
我是 Backendless 的新手,我已经阅读了所有关于关系的手册,但仍然不确定如何在两个 table 之间创建中间层 table。
例如,我有 table 个调用用户和 table 个调用事件。用户可以订阅事件。所以我想要新的 table UserEvents,它有 user_id 和 event_id。另外,我将如何检索用户添加的所有事件?换句话说,如何在 Backendless 中进行连接?(我想没有连接,但一切都简单得多)。
非常感谢!
这里有两个不同的问题:
- 如何创建对象之间的关系?
- 如何加载用户创建的对象?
让我们从第一个开始:
如何创建对象之间的关系?
当您使用 Backendless 时,重要的是从对象而不是 table 的角度来思考。例如,如果有一个名为 Order 的实体并且它包含一个 OrderItem 对象的集合,那么这就是您的数据结构。您不需要在控制台中预先创建 tables – Backendless 会在您第一次保存包含 OrderItems 集合的 Order 对象时为您完成。但是,如果您想在我们的控制台中手动执行此操作,请执行以下步骤:
- 登录控制台,select一个应用程序,点击数据
- 创建 table 订单(最好以单数形式命名 tables - 所以是订单,而不是订单)。
- 当你创建一个新的table时(点击左下角的“+”按钮),控制台会提示你切换到Schema Editor,这样你就可以添加一些数据列了。列将对应于 class 中的 属性,它表示 table.
中的记录
- 现在订单 table 已就位,对订单项 table 重复该过程。
- 一旦 table 都存在,我们需要 "link" table 在一起。 link 将建立一对一或一对多的关系。为此,select 命令 table 并单击右上角的 Table 模式和权限 红色按钮。
- 单击添加关系 按钮。
- 在出现的弹出窗口中,您需要创建一个 属性,其中将包含订单项目对象的集合。将 属性 "orderItems" 命名为(这里可以使用复数形式)。在弹出窗口 select 的右侧,OrderItem table。在多重性下拉列表中 select 许多。
- 单击保存。至此关系建立。
要查看它的工作情况,您可以使用代码生成模块,该模块将为您提供使用 table 的所有源代码。单击 代码生成 图标。在 Android 部分,select Eclipse 或 IDEA 在 IDE 块中,然后单击 Java classes for defined data tables 选项。单击 下载项目 。 Backendless 将生成一个 ZIP 文件,其中包含客户端 classes 的源代码,使您可以在 tables 上执行完整的 CRUD(创建、检索、更新、删除)范围的操作。
文档描述了如何使用相关数据。例如,参见 approaches and API for retrieving related objects.
当涉及到如何加载用户创建的对象的问题时,事情就简单多了。那么我们来到第二个问题:
如何加载用户创建的对象?
上述方法同样适用于 link 内置用户 table 和任何其他 table。但是,特别是对于用户 table,link/relationship 不是必需的。这样做的原因是 Backendless 会自动用 "owner" 的 ID 标记任何创建的对象,即创建该对象的用户。那个"tag"可以在Userstable中用特殊的ownerId属性看到。为了能够检索属于用户的对象,我们需要修改 table 的安全权限,其中包含用户创建的对象:
- 登录到控制台,select 您的应用程序并单击“数据”图标。
- Select table 包含用户创建的对象。
- 单击屏幕右上角的Table安全和权限红色按钮。
- 单击角色权限菜单项。
- 在 Find 列和 AuthenticatedUser 行的交叉点找到单元格。单击该单元格,直到您看到一个红叉。
- 对 Find 列和 NotAuthenticatedUser 行的交集重复上一步。
此时,您限制了已验证和未验证(来宾)用户对 table 的所有访问。下一步将允许所有者检索他们创建的对象。
- 单击所有者政策菜单项。
- 单击“查找”列中的单元格,直到出现绿色复选标记。
- 此时,当您调用 table 上的任何 Find 方法时,Backendless 将 return 仅属于当前登录用户的对象。
我是 Backendless 的新手,我已经阅读了所有关于关系的手册,但仍然不确定如何在两个 table 之间创建中间层 table。 例如,我有 table 个调用用户和 table 个调用事件。用户可以订阅事件。所以我想要新的 table UserEvents,它有 user_id 和 event_id。另外,我将如何检索用户添加的所有事件?换句话说,如何在 Backendless 中进行连接?(我想没有连接,但一切都简单得多)。 非常感谢!
这里有两个不同的问题:
- 如何创建对象之间的关系?
- 如何加载用户创建的对象?
让我们从第一个开始:
如何创建对象之间的关系?
当您使用 Backendless 时,重要的是从对象而不是 table 的角度来思考。例如,如果有一个名为 Order 的实体并且它包含一个 OrderItem 对象的集合,那么这就是您的数据结构。您不需要在控制台中预先创建 tables – Backendless 会在您第一次保存包含 OrderItems 集合的 Order 对象时为您完成。但是,如果您想在我们的控制台中手动执行此操作,请执行以下步骤:
- 登录控制台,select一个应用程序,点击数据
- 创建 table 订单(最好以单数形式命名 tables - 所以是订单,而不是订单)。
- 当你创建一个新的table时(点击左下角的“+”按钮),控制台会提示你切换到Schema Editor,这样你就可以添加一些数据列了。列将对应于 class 中的 属性,它表示 table. 中的记录
- 现在订单 table 已就位,对订单项 table 重复该过程。
- 一旦 table 都存在,我们需要 "link" table 在一起。 link 将建立一对一或一对多的关系。为此,select 命令 table 并单击右上角的 Table 模式和权限 红色按钮。
- 单击添加关系 按钮。
- 在出现的弹出窗口中,您需要创建一个 属性,其中将包含订单项目对象的集合。将 属性 "orderItems" 命名为(这里可以使用复数形式)。在弹出窗口 select 的右侧,OrderItem table。在多重性下拉列表中 select 许多。
- 单击保存。至此关系建立。
要查看它的工作情况,您可以使用代码生成模块,该模块将为您提供使用 table 的所有源代码。单击 代码生成 图标。在 Android 部分,select Eclipse 或 IDEA 在 IDE 块中,然后单击 Java classes for defined data tables 选项。单击 下载项目 。 Backendless 将生成一个 ZIP 文件,其中包含客户端 classes 的源代码,使您可以在 tables 上执行完整的 CRUD(创建、检索、更新、删除)范围的操作。
文档描述了如何使用相关数据。例如,参见 approaches and API for retrieving related objects.
当涉及到如何加载用户创建的对象的问题时,事情就简单多了。那么我们来到第二个问题:
如何加载用户创建的对象?
上述方法同样适用于 link 内置用户 table 和任何其他 table。但是,特别是对于用户 table,link/relationship 不是必需的。这样做的原因是 Backendless 会自动用 "owner" 的 ID 标记任何创建的对象,即创建该对象的用户。那个"tag"可以在Userstable中用特殊的ownerId属性看到。为了能够检索属于用户的对象,我们需要修改 table 的安全权限,其中包含用户创建的对象:
- 登录到控制台,select 您的应用程序并单击“数据”图标。
- Select table 包含用户创建的对象。
- 单击屏幕右上角的Table安全和权限红色按钮。
- 单击角色权限菜单项。
- 在 Find 列和 AuthenticatedUser 行的交叉点找到单元格。单击该单元格,直到您看到一个红叉。
- 对 Find 列和 NotAuthenticatedUser 行的交集重复上一步。
此时,您限制了已验证和未验证(来宾)用户对 table 的所有访问。下一步将允许所有者检索他们创建的对象。
- 单击所有者政策菜单项。
- 单击“查找”列中的单元格,直到出现绿色复选标记。
- 此时,当您调用 table 上的任何 Find 方法时,Backendless 将 return 仅属于当前登录用户的对象。