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