NIFCLOUD-mbaas / UserCommunity

ニフクラ mobile backend ユーザーコミュニティ
https://mbaas.nifcloud.com/
82 stars 18 forks source link

【相談】効率の良いクエリ構築について #392

Open n1gg opened 8 years ago

n1gg commented 8 years ago

ポインターを使ってフォロー/フォロワーの仕組みを構築する | BACKEND AS A SERVICE mbaas BLOG http://blog.mb.cloud.nifty.com/?p=7457

こちらの記事下部で「フォローしているユーザーの一覧(follows)」を取得していますが、さらに「followsの投稿(post)一覧」まで取得するケースを考えています。

すぐに思いついたのは ・followsをループで回し、各followユーザーをポインターとして持つpostを検索 のように1度目のリクエスト結果をもとに追加でリクエストを投げる方法でしたが、(例えば1度のリクエストで全て取得出来るような)より効率の良い方法はあるでしょうか?

非同期処理の複雑性を避けるため、できる限り無駄なリクエストをなくしたいと思っております。アドバイスよろしくお願い致します。

goofmint commented 8 years ago

ユーザのIDを配列にして、一度に複数ユーザ分取得することはできるかと思います。

http://mb.cloud.nifty.com/doc/current/datastore/basic_usage_javascript.html#基本的なクエリのオペランド

後はグループ機能を使ってできないかなぁと思ったこともあるのですが試してはいません。

n1gg commented 8 years ago

@moongift

ユーザのIDを配列にして、一度に複数ユーザ分取得する

ありがとうございます! 確かに2度めのリクエスト、ループを回す必要はありませんね。

後はグループ機能を使って

ドキュメントに見当たらなかったのですが、どちらの機能になるでしょうか?

goofmint commented 8 years ago

@n1gg ロールですね>グループ http://mb.cloud.nifty.com/doc/current/user/manage_privileges_javascript.html

この辺りを使って、自分が閲覧権限のあるポストだけ取得できないかなーと思ったことがあります。フォローした/されたタイミングでグループにユーザを追加する感じで。

n1gg commented 8 years ago

@moongift なるほど。 とはいえその場合も ・role.fetchUser()でフォローユーザーの一覧を取得 ・その結果をもとにポストを取得 という形となり2クエリ発行するのを避けるのは難しそうですね…!