使用Parse限制呼叫次数

时间:2015-05-30 07:44:55

标签: android database many-to-many realm

我正在使用后端构建我的第一个应用程序。

一般信息

该应用程序允许用户上传地点,为其添加标签,图片等。

的Dbs

我正在使用Realm作为离线Db& Parse.com在线Db。

示例

我正在构建数据库模型并尝试链接所有多对多关系。一个例子: 一个地方有很多标签(短字符串),一个标签可以有很多地方。

为了构建这个,我用领域做了这个: 1.制作场所物体 2.对于每个给定的标记,创建一个标记对象并添加位置对象关系 3.获取place对象并添加标记对象关系

现在,当我有place对象时,我可以从一个地方获取所有标签。 我可以获得属于标签对象的所有地方。

我正在使用Parse构建在线版本,并意识到这种方法会导致许多调用。

可能的解决方案

  • 不要将标记对象关系添加到地点关系(步骤3) 相反,查询标记类与place对象的关系。 (可能很慢?)
  • 有没有办法将模型“离线”并将其作为一个整体推动?

由于我是这种逻辑的新手,我希望问题很明确。 我知道它很广泛,但我认为最好解释整个案例。

1 个答案:

答案 0 :(得分:4)

在Parse中有几种方法可以实现多对多关系。您可以根据相关对象的数量使用数组或关系。您可以在Parse's documentation中阅读更多内容。

在Parse Relations中,您可以在进行调用之前在关系中添加多个对象。让我在文档中选择Book and Author示例并根据您的情况进行调整。这个过程是:

  1. 制作Place对象
  2. 检查标签对象是否存在。如果没有,请创建一个。
  3. 将标记对象与解析关系中的位置对象相关联
  4. 以下是代码示例:

    // let’s say we have a few objects representing Place tags
    ParseObject tagOne=
    ParseObject tagTwo =
    ParseObject tagThree =
    
    // now we create a place object or specify the one you want to update
    ParseObject place= new ParseObject("Place");
    
    // now let’s associate the tags with the place
    // remember to create a "tags" relation on Place
    ParseRelation<ParseObject> relation = place.getRelation("tags");
    relation.add(tagOne);
    relation.add(tagTwo);
    relation.add(tagThree);
    
    // now save the book object
    book.saveInBackground();
    

    编辑以下评论

    如果您想查找具有给定标记的所有地点,您可以这样做:

    ParseObject tag = ....
    ParseQuery<ParseObject> query = ParseQuery.getQuery("Place");
    query.whereEqualTo("tags",tag);