首页 > 解决方案 > 在 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 应用程序中,如果我打开一个人的对话并且该人更改了他的个人资料图片,则所有以前的消息都会得到更新,因为它们在发送消息时没有硬编码。

在呈现消息时获取简单的发送者/接收者详细信息的正确方法是什么。

提前致谢

标签: node.jsreactjsmongodbreact-native

解决方案


推荐阅读