Facebook或Azure中的评论部分是如何实现的,我们可以在其中使用符号标记某些用户'@'?



我正在尝试使用MERN堆栈开发一个类似于Facebook的类似评论框的应用程序。添加简单的注释不是问题。但是,当我们用"@"符号标记某个用户时,标记机制是如何工作的呢?我是否需要将注释作为一些特殊的结构存储在MongoDb数据库中,以便于在react中显示标记用户?或者它是用一些不同的技术实现的?

编辑:问题是UI和API将扮演什么角色,代码流将如何,以及哪些附加内容(例如注释文档中的参考部分(应该是Mongo数据库的一部分才能使其工作?

由于您的问题非常广泛,因此不清楚您是想了解数据库语义还是前端部分。但这里有一些建议;

  • 前端:您可以在textarea上使用onKeyDown事件来确定键入了什么字符。如果是@,则可以向用户显示用户下拉列表,如果用户继续键入,则可以减少下拉列表
  • 后端:一旦提交,你想找到所有提到的@user。这可以使用regex来查找以@开头的所有内容。像[s.]?@(w)s这样的正则表达式会在一个句子中给你所有的提及。然后,您将在数据库中找到该用户,并在数据库中添加对注释条目的引用
  • 数据库:一旦你了解了用户,你可能想通知提到的用户,添加到收件箱等。有很多不同的技术可以实现这一点,这实际上取决于你的需求、选择的数据库和你的模式。但一般来说,有两种广泛使用的技术,称为Fan out on ReadFan out on Write

最新更新