2016-12-15 11 views
0

私はトピックに関する記事を投稿して好きなものにできるソーシャルネットワークに取り組んでいます。rethinkdbでユーザ情報を含む投稿を取得する

あなたの好きなものをトラッキングするのに問題があります。

スキーマは以下の通りである

ユーザー: {にuserId: "someId" は、好き:[ "idPost1"、 "idPost4"、...]}

記事: {postId。 "someId"、トピック: "idTopic"、postContent:

  1. このように、特定のトピックからすべての投稿をしてください: "someContent"}

    は、私ができる、クエリを必要とします:

    r.table( '支柱')({ トピック:idTopic を})フィルタ。。。(実行)を(ポスト=> res.json(ポスト))

  2. 参照するルックアップ現在のユーザ(ユーザIDによって与えられた)がその特定のトピックに関する投稿を好きならその後、そのトピックに関するすべての投稿と、「好き:true」のユーザーが好きな投稿を含む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関数は、投稿IDがlikes配列にあるかどうかをチェックし、真理値として直接返されます。

関連する問題