問題タブ [social-network-friendship]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
715 参照

php - ユーザーの友達をアルファベット順に表示する最良の方法

私が PHP/MySQL で作業しているソーシャル ネットワークでは、友人ページがあり、ほとんどのネットワークと同様に、ユーザーが持っているすべての友人が表示されます。MySQL にフレンド テーブルがありますが、いくつかのフィールドしかありません。auto_ID、from_user_ID、to_friend_ID、日付

友達ページに、結果を並べ替えるためのいくつかの異なるオプションを用意したいと思います。

  1. 基本的に友達が追加された順であるauto_IDによって。それは単なる自動インクリメントIDです

  2. 日付による新しい友達、日付フィールドを使用します

  3. 友達の名前で、アルファベット順にリストが表示されます。

アルファベット順は、アドバイスが必要な場所です。アルファベット AZ のリストが表示されます。ユーザーが K をクリックすると、K で始まるすべてのユーザー名が表示されます。秘訣は、高速である必要があるため、ユーザーのテーブルで JOIN を実行することはオプションではありません。ほとんどの人は高速であると主張しますが、このアクションに必要なパフォーマンスではありません。私が思いついたアイデアの 1 つは、フレンドシップ テーブルにフィールドを 1 つ追加して、ユーザー名の最初の文字をそこに格納することでした。ユーザーはいつでも名前を変更できるため、ユーザーが名前を変更するたびに、何千もの可能性のあるレコードでこれが更新されるようにする必要があります。

これを行うより良い方法はありますか?

0 投票する
1 に答える
1133 参照

ruby-on-rails - Rails 3 の高度なフレンドシップ モデルとクエリ

私には友情モデルがあり、新しい友情ごとに 2 つの新しいレコードを作成します。

  • User1 と Friend1
  • フレンド1とユーザー1

友達、友達、保留中の友達など、すべての標準スタッフを取得できます...共通の友達、友達の友達を取得しようとすると、状況が複雑になります...

今のところ、共通の友情を得るために、私は次のようなものを使用しています:

finder_sqlまた、次のような完全なクエリを使用できます。

Rails 3でエレガントな方法でそれを行うにはどうすればよいですか?

0 投票する
2 に答える
325 参照

ruby-on-rails - Rails でのソーシャル リンクにフレンドシップが必要なのはなぜですか?

レールのソーシャルリンクシステムに関する多くのチュートリアルを見ています。結合モデル「友情」を使用して、ユーザーオブジェクトのエイリアスとして友人を一貫して使用しているように見えることに気付きました。

最初はこれに従っていましたが、先に進むにつれて、物事がcreate.friend本当に鈍くなっているようです。私の例では、「連絡先」と「接続」という用語を使用しています...ユーザーの連絡先をすべてリストするときは、連絡先コントローラーとビュー ( /contacts 、 /contacts/検索、/連絡先/作成など..) しかし、すべてのクラッドは実際には接続 (友情) テーブルを扱っています... これは、私が行くにつれて本当に後方に見え始めます.

なぜこのように行われるのですか?私が思う唯一の利点は、「contact.email」のようなものを言うことができることですが、コードに追加の抽象化と体操がそれに値するかどうかはわかりません。私は言うのと同じくらい幸せだろうcontact.user.email.

連絡先ページにリンクしますか? link_to contact.user(右?)

モデルが標準的で明白な粗雑な構造と「接触」し、ユーザーモデルのこのエイリアシングを忘れた場合、何か問題はありますか? 率直に言って、認証以外の目的でユーザー モデルをいじってもあまりメリットはないと思います。ユーザーのすべての情報をプロファイルに入れています。

または、何か不足していますか?

更新: 不明な点があるようですので、詳しく説明します。

プランA:

次に、これに対して通常の CRUD を実行します。「連絡先」ページに移動すると、通常のcrud操作などですべての連絡先が表示されます...連絡先の電子メールを取得するには、このシナリオでは次のように言います: contact.connection.email

それから私はいくつかの読書をしました、そして他の誰もがこれをしているのを見ました:

しかし、連絡先コントローラー (フレンド コントローラー) を使用して、ここでクラッドを渡します。唯一の利点は、contact.email と言うことができるように見えることですが、連絡先コントローラーのすべてのクラッドを奇妙なものにします。例えば:

http://railsforum.com/viewtopic.php?id=16760

なぜ明らかな切断が起こるのだろうと思っていました。

更新 2:

わかりました...連絡先はユーザーモデルへの参照でなければなりません...それを回避することはできません。その場合でも3ステップ。ただし、このパスに沿って実行しようとすると、いくつかの細かい点でまだ混乱しています。

次のようなコードでcontacts_controller.rbを使用するのはmvcの違反ですか?

そして、form_for @connection やルーティング エラーなどを実行しようとすると、おかしくなりました。私はこの質問を台所で沈めていることを知っており、これまでのすべてのフィードバックに本当に感謝しています.

更新 3:

これらの関係で私が抱えている混乱の実際的な例を次に示します。

ユーザーの連絡先を反復処理するとき、この連絡先を削除対象のリストに表示する接続を巧みに呼び出すにはどうすればよいですか? たぶん、ユーザーの接続を反復処理して、connection.contact.email をプルして電子メールを表示する必要がありますか?

0 投票する
3 に答える
15710 参照

facebook - facebook グラフ api..友達の友達を取得

私はFBグラフAPIを使用して、以下を使用して友達の友達のリストを取得しています:

奇妙なことに、これは私の友人の一部には機能し、他の一部には機能しません。なぜこれが起こっているのか、そして可能な修正を教えてもらえますか?

うまくいかない場合、次のメッセージが表示されます:「YYYYYY のすべての友達を検索できません。ログインしているユーザー (XXXXX)、または適切な権限を持つログインしているユーザーの友達のみを検索できます」

繰り返しますが、上記の URL を使用して友人の一部の友人リストを取得できます。ここで言及されている権限は何ですか?

0 投票する
2 に答える
3545 参照

facebook-graph-api - 友情の開始日を取得する

私は2人のユーザーが友達になった日付を知る方法を探していました。私はこの質問を見つけましたが、それは複数のFQLクエリで友情ページをシミュレートする方法を説明するだけです。

私が決定したいのは、友情ページの上部に表示される日付です(「Facebookの友達以来...」)。

0 投票する
1 に答える
196 参照

php - ソーシャル ネットワーク環境で、世界中の友情を確認する最も簡単な方法は何ですか?

参考までに、この質問に関連する最近私が尋ねたSOに関する質問を次に示します。 友情関係をモデル化する方法

その質問に対して、友人が投稿した場合にのみニュース フィード アイテムを表示する方法を見つけました。しかし、私が必要としているのは、複数のサイト機能で使用できるように、より動的な方法で友情を確認する方法についてのアドバイスです。

たとえば、コメント システムをインストールしたところ、ユーザーがニュース投稿にコメントを投稿できるようになりました。ただし、これは友人に限定されているわけではなく、そうすべきです (後で、投稿の作成者によってオプションにされる必要があります)。

データベースから直接データをSELECT取得し、現在のユーザーの友人による投稿のみを取得するためにサブクエリを使用していたため、友人のみによるニュース項目の投稿は少し異なりました。ただし、コメントの例では、コメント投稿フォームを表示したいのは相手が友達の場合だけです。データベースから実際に何かを取り出して、選択、並べ替え、表示するわけではありません。

このような問題がサイト全体で何度も発生することを知っています。友情を確認する最も簡単な方法は何ですか? データベースからすべての友人のユーザー ID をなんらかのセッション配列に取得し if(in_array($friends)) 、問題の人が現在ログインしているユーザーの友人であるかどうかを判断する必要があるときはいつでも実行できますか? 私の頭の上では、これでうまくいくように思えますが、最初にあなたの意見を聞かせてください.

上記にリンクした質問は、私の友情テーブルがどのように機能するかを説明しています。

0 投票する
3 に答える
3326 参照

django - 友情関係のベストモデル(Django)

ソーシャルネットワーキングサイトのユーザー間の友情をモデル化するための最良の方法は何ですか?

可能な状態は次のとおりです。

  • 友情なし
  • AからBへのFriendRequest、Bは確認する必要があります(これは非対称です)
  • AとBは友達です(これは対称です)

今ではモデルを正しく選択するのは複雑です。

私の友達は私のプロフィールの一部です

非常に明白なことですが、A.profile.friendsは他のユーザーとの多対多の関係です。

  • 友情なし:BはA.friendsになく、AはB.friendsにありません
  • AはBとの友情を要求します:A.friendsのB
  • 友達:A.friendsのBとB.friendsのA

しかし、友人をfriendrequest関係とマージするのはかなり汚れているようです。このマージがないと、データは冗長になります。これは、「A.friendsのBではなくA.friendsのA」が未定義の状態になるためです。

Friend-Lookup:A.friends.filter(friends__contains = B)#dbレベルでのかなり複雑なルックアップ、コーダーにとって直感的ではない

個別のテーブル

FriendRequestは非常に明白であり、requesterとrequested_userを持つクラスであり、selectも非常に明白です。

フレンドモデルは、フィールドとしてperson1とperson2を持ち、すべてのルックアップで、person1=Aとperson2=Bまたはperson1=Bとperson2=Aのフレンドを選択する必要があるためあまり良くありません。

Friend-Lookup:Friend.objects.filter(person1 = A)union Friend.objects.filter(person2 = A)#uncleanで、2つのセットを結合する必要があります

many2manyテーブルを分離する

もう1つのオプションは、friendsフィールドを持つFriendモデルです。これは、many2manyフィールドであり、正確に2人の人物にリンクします。次に、selectはfriendsフィールドの人物の1人と一致し、モデルを返します。ここで、人物Bは、友達セットからAを差し引くことで抽出できます。しかし、これはやり過ぎです。なぜなら、フレンドオブジェクトに2人以上が関連付けられることはないからです。

Friend-Lookup:Friendship.objects.filter(persons__contains = A)#2つのテーブルを照会します

では、友情関係を保存するための最もクリーンで直感的なソリューションは何だと思いますか?それを行うための一般的なパターンはありますか?

0 投票する
1 に答える
300 参照

sql - 友情リクエスト SQL テーブルの設計に助けが必要

友情リクエスト用の SQL テーブルがあります。テーブルはサーバー上にあります - クライアントは携帯電話です

モバイルでのより良い練習のために、友情リクエストテーブル全体を常にクエリしないように、デバイスのローカル DB にもテーブルを保存します。テーブルがクエリされると、ローカル DB に保存されるため、何も変更されていない場合、デバイスはサーバーからクエリを実行する必要はありません。

だから-アプリの初期化で...(またはデバイスのアプリのメールボックスに入るたびに)デバイスはサーバーに新しいメッセージと友情要求の更新があるかどうかを知るように求めています...メッセージの場合は簡単です-新しいメッセージごとには別の ID を持っており、id > 保存された id のすべてのメッセージをサーバー上で検索します。しかし、フレンドシップ リクエストについては、サーバーの DB の行を更新して、インデックスが同じインデックスのままになるようにします...

私は2つのオプションを考えました:

  1. 日付列を追加し、最後のチェックより後に行われた更新をチェックします (最後のチェックはローカル DB に保存されます)。日付ではなくインデックスで比較したい

  2. アプリの初期化時にユーザーのすべてのフレンドシップ リクエスト エントリを取得し、ローカルで比較を行う

推奨事項はありますか?より良いアイデア?