首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何存储用户提及

如何存储用户提及
EN

Stack Overflow用户
提问于 2011-09-23 03:04:29
回答 3查看 1.9K关注 0票数 3

我想用@username来实现用户提及,就像在Twitter中一样。但是,在我的应用程序中,用户名可能会改变。我的方法是在将帖子保存到数据库之前对其进行解析,并将所有@username转换为@userId。你觉得这个怎么样?有谁有更好的选择吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-23 03:33:12

按原样存储原始文本,并使用uid和用户名创建相关记录的表。

示例模式:

post表

代码语言:javascript
复制
id
text

user_mention表

代码语言:javascript
复制
id
post_id
user_id_mentioned
user_name_mentioned

保存帖子后,您的代码应该遍历并创建所有user_mention记录。您可以遍历提及表以发送电子邮件或其他任何您想要做的事情。

如果用户更改了用户名,您现在可以选择用新的用户名更新帖子,或者让旧的用户名链接到正确的用户。

我的规则是,在保存到数据库之前,永远不要修改原始的非结构化文本(但一定要检查它,以避免注入和诸如此类的事情),并且只在输出时修改数据。这意味着你总是让用户输入数据,你永远不知道什么时候会有价值。

也许有一天你会对谁在被提及n次后改变了他们的用户名感兴趣?或者其他一些由于修改了非结构化数据而无法获取的报告。你永远不知道什么时候需要原始数据,在这种情况下,你会得到额外的好处,让你的文本更容易处理。

票数 8
EN

Stack Overflow用户

发布于 2011-09-23 03:15:46

是的,我认为在post时检查用户名列表,并在内部将其转换为用户ID是有意义的。然后,无论何时显示帖子,都要将用户ID转换回当前用户名。

请注意,对于非动态内容,例如发送的电子邮件等,这将更加困难。

此外,我会确保用户名的显示方式清楚地表明它们不是OP发布的文字,否则,这将为用户提供一种将文本插入到其他人的帖子中的方法。

票数 0
EN

Stack Overflow用户

发布于 2011-09-23 03:33:41

是的我觉得那很好。推特本身不仅仅使用Usernames,它还使用UserIDs

它获取tweeters的用户ID,然后查找它以获得实际的用户名。

文档:MentionsLookup

每个用户都应该有一个唯一的ID。在将ID发送到对用户可见的任何位置之前,您应该将ID与用户名进行匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7520035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档