【发布时间】:2015-09-23 10:37:57
【问题描述】:
我正在为网站构建评论/消息系统,但遇到了有关消息的问题。
当我访问我网站上出售的物品时,我收到了该物品上的所有消息。我可以查看所有消息,因为该项目上的人只能给我发消息。
问题是将消息拆分为会话,因为我不希望消息混合在一起。
每条消息都有一个发送者和一个接收者,该发送者带有一个指向用户的 id,以及一个接收者,它也带有一个 id。
我尝试将其拆分为子数组,其中包含来自一个发件人的所有消息,但这不包括我发回的消息。
var messages = data.reduce(function (buckets, item) {
if (!buckets[item._sender._id]) {
buckets[item._sender._id] = [];
}
buckets[item._sender._id].push(item);
return buckets;
}, {});
$scope.messagesBucket = _.values(messages);
如果我在控制台记录 messagesBucket,它看起来像这样
[Array[x], Array[y]] // each array is a conversation
>0: Array[z] // each conversation is array of messages, but they don't include the ones i sent, which is my problem
>1: Array[q]
...
所以我的问题是我不知道如何将所有消息分成对话。
使用 lodash 是一种奖励!
编辑(消息数据):
[
{
"_id": "5602858bb1f8f5ee05078ee0",
"_item": "5602858bb1f8f5ee05078ed9",
"content": "Det var billigt.",
"_sender": {
"_id": "56028589b1f8f5ee05078ec2",
"firstName": "Ole",
"lastName": "Wedel",
"image": "URL"
},
"_receiver": {
"_id": "56028589b1f8f5ee05078ec1",
"firstName": "Knud",
"lastName": "Larsen",
"image": "URL"
},
"__v": 0,
"timestamp": "2015-09-03T10:57:15.918Z"
},
{
"_id": "5602858bb1f8f5ee05078ee1",
"_item": "5602858bb1f8f5ee05078ed9",
"content": "Jeg vil lige tænke over det",
"_sender": {
"_id": "56028589b1f8f5ee05078ebe",
"firstName": "Oscar",
"lastName": "Andersen",
"image": "URL"
},
"_receiver": {
"_id": "56028589b1f8f5ee05078ec1",
"firstName": "Knud",
"lastName": "Larsen",
"image": "URL"
},
"__v": 0,
"timestamp": "2015-04-14T10:57:15.918Z"
},
{
"_id": "5602858bb1f8f5ee05078ee3",
"_item": "5602858bb1f8f5ee05078ed9",
"content": "Det går nok. Jeg har også andre jeg kan sælge til.",
"_sender": {
"_id": "56028589b1f8f5ee05078ec3",
"firstName": "Troels",
"lastName": "Sørensen",
"image": "URL"
},
"_receiver": {
"_id": "56028589b1f8f5ee05078ec1",
"firstName": "Knud",
"lastName": "Larsen",
"image": "URL"
},
"__v": 0,
"timestamp": "2014-11-12T11:57:15.918Z"
},
{
"_id": "5602858bb1f8f5ee05078eed",
"_item": "5602858bb1f8f5ee05078ed9",
"content": "Arh, jeg bliver nok nødt til at springe fra...",
"_sender": {
"_id": "56028589b1f8f5ee05078ec1",
"firstName": "Knud",
"lastName": "Larsen",
"image": "URL"
},
"_receiver": {
"_id": "56028589b1f8f5ee05078ec2",
"firstName": "Ole",
"lastName": "Wedel",
"image": "URL"
},
"__v": 0,
"timestamp": "2014-05-22T10:57:15.919Z"
}
]
【问题讨论】:
-
请添加一些示例消息数据,这将使人们更容易回答!
-
如果它解决了您的问题,请考虑接受答案。如果没有,请编辑您的问题以使其清楚。
标签: javascript arrays angularjs lodash