javascript - 如何查询没有被指向的对象? (例如,尚未标记的帖子)

标签 javascript parse-platform

我有一个Posts目的。用户通过创建 Flags 来标记帖子具有指向进攻性指针的对象 Posts目的。如何查询Posts那些还没有被标记?我尝试过:

var postQuery = new Parse.Query("Posts");
var flagQuery = new Parse.Query("Flags");
postQuery.doesNotMatchKeyInQuery("objectId", "post", flagQuery);

但标记的帖子不会被省略(objectId是一个字符串,post是一个指针?)。

其他想法(以及我拒绝它们的原因):

  • 执行flagQuery单独创建标记帖子 ID 数组,并使用 postQuery.notContainedIn("objectId", flagArray); (这需要额外的请求)
  • 增加 Posts 上的标记计数器对象(这不允许我调查哪些用户标记了什么)
  • 将标记者(用户)数组存储在 Posts 中对象而不是 Flags对象(这不允许我调查时间戳)

最佳答案

这个用例与我回答的类似here

如果您还需要能够跟踪标记的时间戳,只需稍微更改您的模型,以便在 Post 中存储 Flag 对象的数组。然后,您可以向查询添加约束,以仅获取没有 Flag 对象的帖子: query.whereKeyDoesNotExist("flags")

从技术上讲,我可以通过添加云代码 afterSave() 来解决这个问题Flag 对象的函数,通过将指向新创建的 Flag 对象的指针添加到 flags 来更新 Post 对象。数组列。

评论后编辑: OP 已澄清,这只是尚未被他感兴趣的当前用户标记的帖子。由于查询效率是您想要优化的,因此我将通过复制数据来处理这个问题。保留 flags 数组列并为 flaggedby 添加另一个数组列。 afterSave()然后将添加一个指向 Flag 对象的指针和一个指向 User 对象的指针。

请记住,这要求您在用户“取消标记”帖子时也更新两列...

要查找当前用户尚未标记的帖子,请对 flaggedby 数组进行查询,如下所示:

[query whereKey:@"flaggedby" notEqualTo:[PFUser currentUser]];

这将返回当前用户未包含在 flaaggedby 数组列中的所有帖子

关于javascript - 如何查询没有被指向的对象? (例如,尚未标记的帖子),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33597331/

相关文章:

Android - Parse.com - 从查询回调返回对象

javascript - angular ui-select 中的 ng-disabled 选项缩小了文本框

javascript - 基本 Javascript- HTML 按钮

javascript - Jade 条件菜单

ios - 从解析中检索用户数据以快速显示在 TableView 中

ios - 解析查询不显示最新数据

php - 如果我使用 php 而不是服务器端 javascript 来构建网站,我是否不太可能遇到跨浏览器问题?

javascript - mysql 在某些表单字段上插入失败

ios - 将多个图像作为 PFFiles 添加到解析数组

parse-platform - 如何在 Parse.com Web 界面中手动输入行?