3

Twitterのように@usernameでユーザーメンションを実装したい。しかし、私のアプリでは、ユーザー名が変わる可能性があります。私のアプローチは、データベースに保存する前に投稿を解析し、すべての@usernameを@userIdに変換することです。これについてどう思いますか?誰かがより良い選択肢がありますか?

4

3 に答える 3

8

元のテキストをそのまま保存し、uidとusernameを使用して関連レコードのテーブルを作成します。

スキーマの例:

投稿[表]

id
text

user_mention[テーブル]

id
post_id
user_id_mentioned
user_name_mentioned

投稿が保存されると、コードが通過し、すべてのuser_mentionレコードが作成されます。メンションテーブルをループして、電子メールやその他のやりたいことを送信できます。

ユーザーがユーザー名を変更した場合、新しいユーザー名で投稿を更新するか、古いユーザー名を正しいユーザーにリンクするかを選択できるようになりました。

私のルールは、データベースに保存する前に元の非構造化テキストを決して変更せず(ただし、挿入などを避けるために健全性チェックを行う)、出力時にのみデータを変更することです。これは、常にユーザーがデータを入力していることを意味し、それがいつ価値があるかはわかりません。

ある日、n回言及された後、誰がユーザー名を変更したかに興味がありますか?または、非構造化データを変更したために取得できないその他のレポート。元のデータがいつ必要になるかはわかりません。この場合、テキストを操作しやすくするという追加のボーナスが得られます。

于 2011-09-22T19:33:12.190 に答える
0

ええ、投稿時にユーザー名リストをチェックして、内部でユーザーIDに変換するのは理にかなっていると思います。次に、投稿を表示するたびに、ユーザーIDを現在のユーザー名に変換し直します。

これは、送信された電子メールなどの動的でないコンテンツではより困難になることに注意してください。

また、ユーザー名は、OPが投稿した単語ではないことを明確にする方法で表示されるようにします。そうしないと、ユーザーが他の人の投稿にテキストを挿入する方法が提供されます。

于 2011-09-22T19:15:45.550 に答える
0

はい、それは良いことだと思います。UsernamesTwitter自体はそれを使用するだけではありませんUserIDs

ツイーターのユーザーIDを取得し、それを検索して実際のユーザー名を取得します。

ドキュメント:言及ルックアップ

各ユーザーは一意のIDを持っている必要があります。ユーザーに表示される場所にIDを送信する前に、IDとユーザー名を一致させる必要があります。

于 2011-09-22T19:33:41.480 に答える