【发布时间】:2020-09-29 14:42:42
【问题描述】:
我想要实现的是我想一个一个地显示fromUsers,但没有重复。因此,如果我有 2 条来自同一个 John(同一个 fromUserId)的消息,那么我希望这个 John 的名字只出现一次,因为它是同一个 John 和同一个 fromUserId。然后,一旦我点击 John 的名字,我就会看到 2 条消息(hi + hey)。我们无法摆脱任何对象,因为message 不同,我仍然需要显示这些消息。有可能实现这一点吗?我正在使用 Node.js、Mongodb、Mongoose 和 React。
[
{
"message": "hi",
"fromUser": "John",
"fromUserId": "5edb1f10b82175355479f05a",
},
{
"message": "hey",
"fromUser": "John",
"fromUserId": "5edb1f10b82175355479f05a",
},
{
"message": "ola",
"fromUser": "Jane",
"fromUserId": "5ed9d49c7e516616600eb693",
}
]
渲染:
<div>
{this.state.from.map((from) => {
return <div key={from._id}>{from.fromUser}</div>;
})}
</div>
axios 获取请求:
axios.get('/api/getMessage', { headers: { 'X-Auth-Token': token } }).then((res) => {
this.setState({ from: res.data });
});
类组件中的状态:
this.state = {
message: '',
from: [],
};
【问题讨论】:
-
删除整个数据集中的重复项,还是仅在连续运行中?你能澄清预期的结果吗? IE。全局分组
[[john, john, john], [jane, jane]]或按顺序分组[[john, john], jane, john, jane]。 -
[[john, john, john], [jane, jane]] 是正确的,但是 [[john, message, message]], [jane, message] 应该更理想,因为如果相同john 发送了很多消息,然后我不需要他的名字(同一个 John)不止一次,但我需要来自 john 等的每条消息。:)
标签: javascript node.js reactjs mongodb mongoose