gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:24:51 26 4
gpt4 key购买 nike

我有一个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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com