2016-12-15 64 views
0

我正在研究某种社交网络,在这种社交网络中,人们可以发表关于某个主题的帖子并且喜欢它们。在rethinkdb中检索包含用户信息的帖子

我无法跟踪用户喜欢。

架构如下:

用户: {用户名: “someId”,喜欢:[ “idPost1”, “idPost4”,...]}

文章: {帖子ID: “someId”,主题为: “idTopic”,postContent: “somecontent写入”}

我需要一个查询,可以:

  1. 采取所有帖子来自某个话题,这样的:

    r.table( '信息')滤波器({ 主题:idTopic })。。运行(),然后(帖=> res.json(日志))

  2. 查一查看如果当前用户(由用户标识给出)已经喜欢该特定主题上的任何帖子。然后返回一个包含该主题的所有帖子的JSON,以及具有“喜欢:真”的用户喜欢的JSON。

有麻烦林第2步,

请让我知道如果IM建模数据的方法不对,或者如果你能想到的任何方式,我可以完成第2步

谢谢!

回答

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是否位于像素数组中,并直接作为真值返回。