【问题标题】:Backendless iOS: intermediate table between two tablesBackendless iOS:两个表之间的中间表
【发布时间】:2015-01-07 07:01:08
【问题描述】:

我是 Backendless 的新手,我已经阅读了所有关于关系的手册,但仍然不确定如何在两个表之间创建 san 中间表。 例如,我有名为 users 的表和名为 Events 的表。用户可以订阅事件。所以我想要新表 UserEvents,它有 user_id 和 event_id。另外,我将如何检索用户添加的所有事件?换句话说,如何在 Backendless 中进行连接?(我想没有连接,但一切都简单得多)。 非常感谢!

【问题讨论】:

    标签: ios sql api backend backendless


    【解决方案1】:

    这里有两个不同的问题:

    1. 如何创建对象之间的关系?
    2. 如何加载用户创建的对象?

    让我们从第一个开始:

    如何创建对象之间的关系?

    当您使用 Backendless 时,重要的是要考虑对象而不是表格。例如,如果有一个名为 Order 的实体并且它包含 OrderItem 对象的集合,那么这就是您的数据结构。您不需要在控制台中预先创建表格 - Backendless 会在您第一次保存具有 OrderItems 集合的 Order 对象时为您完成。但是,如果您想在我们的控制台中手动操作,请按照以下步骤操作:

    1. 登录控制台,选择应用,点击数据
    2. 创建表 Order(最好以单数形式命名表 - 所以是 Order,而不是 Orders)。
    3. 创建新表时(单击左下角的“+”按钮),控制台会提示您切换到模式编辑器,以便您可以添加一些数据列。一列将对应于类中的一个属性,该属性表示表中的一条记录。
    4. 现在 Order 表已经就位,对 OrderItem 表重复该过程。
    5. 一旦两个表都存在,我们需要将这些表“链接”在一起。该链接将建立一种可以是一对一或一对多的关系。为此,请选择 Order 表并点击右上角的Table Schema and Permissions红色按钮。
    6. 点击添加关系按钮。
    7. 在出现的弹出窗口中,您需要创建一个包含订单项目对象集合的属性。将该属性命名为“orderItems”(此处可以将其设为复数)。在弹出窗口的右侧选择 OrderItem 表。在多重性下拉列表中选择很多。
    8. 点击保存。至此,关系建立。

    要查看它的工作情况,您可以使用代码生成模块,该模块将为您提供处理表格的所有源代码。点击代码生成图标。在 Android 部分,在 IDE 块中选择 EclipseIDEA,然后单击 Java classes for defined data tables强>选项。点击下载项目。 Backendless 将生成一个包含客户端类源代码的 ZIP 文件,让您可以对表执行完整的 CRUD(创建、检索、更新、删除)范围的操作。

    该文档描述了如何使用相关数据。例如,请参阅approaches and API for retrieving related objects

    当涉及到如何加载用户创建的对象的问题时,事情就简单多了。所以我们来到第二个问题:

    如何加载用户创建的对象?

    上述方法同样适用于将内置用户表与任何其他表链接。但是,特别是对于用户表,该链接/关系不是必需的。这样做的原因是 Backendless 自动使用“所有者”的 ID 标记任何创建的对象,即创建对象的用户。可以通过 Users 表中的特殊 ownerId 属性看到该“标签”。为了能够检索属于用户的对象,我们需要修改包含用户创建的对象的表的安全权限:

    1. 登录控制台,选择您的应用并点击数据图标。
    2. 选择包含用户创建的对象的表。
    3. 点击屏幕右上角的Table Security and Permissions红色按钮。
    4. 点击角色权限菜单项。
    5. Find 列和 AuthenticatedUser 行的交叉点找到单元格。点击单元格,直到看到一个红叉。
    6. Find 列和 NotAuthenticatedUser 行的交集重复上一步。

    此时,您限制了已通过身份验证和未通过身份验证(来宾)用户对您的表的所有访问。下一步将允许所有者检索他们创建的对象。

    1. 点击所有者政策菜单项。
    2. 单击“查找”列中的单元格,直到出现绿色复选标记。
    3. 此时,当您对该表调用任何 Find 方法时,Backendless 将仅返回属于当前登录用户的对象。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-15
    • 2013-08-06
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 2019-11-13
    • 2021-06-10
    相关资源
    最近更新 更多