在rethinkdb中检索包含用户信息的帖子

时间:2016-12-15 15:48:42

标签: node.js rethinkdb reql

我正致力于某种社交网络,在这种社交网络中,人们可以发布有关某个主题的帖子并喜欢它们。

我无法跟踪用户喜欢的内容。

架构如下:

用户: {userId:" someId",喜欢:[" idPost1"," idPost4",...]}

文章: {postId:" someId",主题:" idTopic",postContent:" someContent"}

我需要一个可以查询的查询:

  1. 从某个主题获取所有帖子,如下所示:

    r.table('帖子&#39)。过滤器({     话题:idTopic  })。run()。then(posts => res.json(posts))

  2. 查看当前用户(由用户ID指定)是否喜欢该特定主题的任何帖子。然后返回一个JSON,其中包含该主题的所有帖子,以及用户喜欢的" like:true"。

  3. 我在第2步遇到了麻烦,

    如果我以错误的方式建模数据,或者如果你能想到我能完成第2步的任何方式,请告诉我。

    谢谢!

1 个答案:

答案 0 :(得分:0)

此功能在javascript中执行您正在寻找的功能。 (使用数据资源管理器测试)

r.db("test").table('posts').filter({ topic: "idTopic" }).merge(function(post){ 
    return {liked: r.table('users').filter({userId: "someId"})(0)('likes').contains(post("postId")) }; })

合并功能基本上迭代每个帖子并添加喜欢的字段。 contains函数检查posts id是否在likes数组中,并直接作为真值返回。