我正在尝试确定在 GAE 的数据存储上创建可投票实体的最有效方法。我想向用户展示一个控件来投票给这个实体或一个图标,表明他们已经投票给它;即,我问“用户是否对该实体进行了投票?”假设我们有一个用户可以投票的 Question 实体。这是我正在考虑做的事情:

  • 查询我的问题实体。这些问题已经有一个预先计算好的排名,我将对其进行排序。
  • 使用作为问题实体子代的关系索引实体。使用与 #1 相同的过滤器查询所有问题,其中我的用户是此关系索引实体的成员。
  • 通过将每个找到的集合成员的 hasVoted 属性设置为 true,将 #2 的结果合并到 #1 中。

  • 这是我能想到的最干净的方法,但它仍然需要两个查询。我没有为每个用户创建重复的问题实体,因为它会导致过多的数据重复。这个解决方案是处理投票和问题之间的 m2m 关系之间有效连接的好方法,还是我的思维过于相关?

    最佳答案

    而不是使用关系索引,只需为每个对问题投票的用户都有一个子实体。将子实体的 key_name 设为用户的 ID。然后,要确定用户 y 是否对 ID 为 x 的问题进行了投票,只需获取 key (Question:x/Vote:y)。您也可以批量处理多个问题或用户的多个实体。

    关于google-app-engine - 在 GAE 上建模投票,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4249683/

    10-14 11:59