node.js - 在 react 和 node.js 中呈现消息时获取用户详细信息
问题描述
我正在使用 node.js、mongodb 和 socket io 构建一个简单的聊天应用程序
在那里,我有用户可以发起与另一个人的对话。
在选择用户后,我想要的只是用户正在向其发送消息的用户的 ID
所以像这样的消息作为从数据库或套接字 io 返回的数据,如果它的新消息不是聊天记录
{conversationID: 4444, id:xxxx, senderID: xxxxx, receiverID: 12345, messageContent: 'Hey there'}
这是从消息数组返回的消息作为示例。
现在,假设我想获取该用户的所有消息,并假设我找到了具有特定对话 id 的所有消息并将它们返回到数组中。
在 react/native 中,我会说,
messages.map(message => <View key={message._id}>{message.messageContent}</View>)
这是一个简单的获取将呈现正确的所有消息。
现在,假设我想在每条消息上显示收件人或发件人的详细信息、用户名、个人资料图片,就像 facebook 一样。
我是否去获取当前对话所在的用户,并在渲染时将他的用户名、个人资料图片与消息合并?
或者,当它像这样发送时,我应该将它包含在消息中
{发件人:{id:xxxx,个人资料:url,姓名:abc},收件人:xxxx,消息:'HEY THERE'}}
这样做的好处是不需要获取用户的详细信息,因为他的个人资料图片和姓名都包含在每个消息对象中。坏事是,如果用户更改他的姓名或个人资料图片,则很难更新所有包含发送或接收者详细信息的消息。
因此,根据经验,最好的方法是什么,因为我希望用户详细信息是动态的,即使用户更改了他的个人资料图片或名称,详细信息也将反映在该特定用户参与的所有消息中。
例如,在 facebook messenger 应用程序中,如果我打开一个人的对话并且该人更改了他的个人资料图片,则所有以前的消息都会得到更新,因为它们在发送消息时没有硬编码。
在呈现消息时获取简单的发送者/接收者详细信息的正确方法是什么。
提前致谢
解决方案
推荐阅读
- python-3.x - IndentationError: unindent 不匹配任何外部缩进级别 122324
- jenkins - 预配置 Jenkins 的标准方法是什么?
- mysql - 用于 LOAD DATA LOCAL INFILE 的 MySQL 循环
- google-calendar-api - 向所有用户授予对谷歌日历的访问权限
- python - 在 Python 中使用大小数解析固定宽度的文件
- python - sys.getsizeof 用于字符串和列表(字符串)
- python - 为原始字符串中的子字符串查找字符串的第一个索引 l?
- c - 如何在 C 中发送差分 UART 信号
- reactjs - 我应该使用克隆道具还是一次性更改道具并使道具进入状态
- laravel - 在 Laravel Collectives 中分配值以选择