parse-platform - Parse js sdk,如何在文档数据库中查询多对多?
问题描述
在 Parse js 指南中它说:
例如,用户可能有许多她可能喜欢的帖子。在这种情况下,您可以使用关系存储用户喜欢的一组帖子。要将帖子添加到用户的“喜欢”列表中,您可以执行以下操作:
var user = Parse.User.current(); var relation = user.relation("likes"); relation.add(post); user.save();
我的用例实际上就是这个确切的设置。我们有用户,他们可以“喜欢”0 个帖子,所以我完全按照上面的说明进行设置。我现在的问题是,对于给定的帖子或一组帖子,我需要查询有多少用户喜欢每个帖子。我无法弄清楚如何查询...有人可以帮我吗?我不确定这是否是一个限制,或者我只是没有足够的知识来解决这个问题。我曾考虑在 Post 本身上存储一个计数器,并在每次用户喜欢或不喜欢 Post 时使用 increment() 和 decrement(),但如果我能侥幸逃脱,我宁愿不这样做。
解决方案
有几种方法可以做到这一点。一种方法是在每个帖子上也有一个关系,likedBy
因此当用户喜欢一个帖子时,您可以将该用户添加到该帖子的likedBy
关系中,并将该帖子添加到该用户的likes
关系中。
另一种解决方案是为Like
. 每当用户喜欢帖子时,您都会创建一个Like
带有指向该帖子Post
和User
喜欢它的人的新帖子。然后,如果您想找到用户喜欢的帖子,您可以轻松查询,或者如果您想知道哪些用户喜欢帖子,那么查询同样简单。
我个人使用第二种方法,但任何一种都可以
推荐阅读
- docker - Docker Compose .env 文件未读取
- css - 文字显示动画
- json - JSON Schema 参考解析
- javascript - 使用 Ajax 启动动态页面似乎会破坏一些 Javascript 功能
- bash - 启动和停止进程以在 Bash 脚本中查找 PID
- c++ - 在 C++ 中移动语义二维向量
- r - 以行为条件,无需循环修改所有列
- angular - 带有可观察订阅的假异步:1 个计时器仍在队列中
- firebase - 如何在firebase v9中上传字符串后获取downloadUrl?
- java - java ReentrantLock tryLock() 误解