#javascript #node.js #sequelize.js
#javascript #node.js #sequelize.js
Вопрос:
Я пробовал это последние пару часов, и я много искал, но не смог найти никаких решений. Я извлекаю данные из базы данных, и там есть временная метка.
Я хочу фильтровать записи по дате, т.Е. Если есть данные на дату 2020-08-20, затем создайте объект, а затем установите все данные за эти дни в одном объекте.
Объект, который я извлекаю:
[
{
"id": 16,
"activity": "Amazon 16",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:14:13.000Z",
"updated_at": "2020-08-25T12:14:13.000Z"
},
{
"id": 15,
"activity": "Amazon 15",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:14:10.000Z",
"updated_at": "2020-08-25T12:14:10.000Z"
},
{
"id": 14,
"activity": "Amazon 14",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:14:07.000Z",
"updated_at": "2020-08-25T12:14:07.000Z"
},
{
"id": 13,
"activity": "Amazon 13",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:14:03.000Z",
"updated_at": "2020-08-25T12:14:03.000Z"
},
{
"id": 12,
"activity": "Amazon 12",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:13:59.000Z",
"updated_at": "2020-08-25T12:13:59.000Z"
},
{
"id": 11,
"activity": "Amazon 11",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:13:51.000Z",
"updated_at": "2020-08-25T12:13:51.000Z"
},
{
"id": 10,
"activity": "Amazon 10",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:13:46.000Z",
"updated_at": "2020-08-25T12:13:46.000Z"
},
{
"id": 9,
"activity": "Amazon 9",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:13:40.000Z",
"updated_at": "2020-08-25T12:13:40.000Z"
},
{
"id": 8,
"activity": "Amazon 8",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:13:33.000Z",
"updated_at": "2020-08-25T12:13:33.000Z"
},
{
"id": 7,
"activity": "Amazon 7",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:13:30.000Z",
"updated_at": "2020-08-25T12:13:30.000Z"
}
]
Чего я хочу, так это:
[
{
"date": "2020-08-20",
"activities": [
{
"activity": "name1"
},
{
"activity": "name2"
}
]
},
{
"date": "2020-08-19",
"activities": [
{
"activity": "name1"
},
{
"activity": "name2"
}
]
}
]
Кроме того, есть разбивка на страницы, и данные должны быть по убыванию.
Ответ №1:
Вы могли бы использовать https://momentjs.com / и фильтр с помощью is between
, а затем сортировка с помощью is after
; Я также порекомендую Ramda Group By (и если вы уже там, фильтр и сортировка из Ramda неизменяемы, сортировка Array.prototype.sort — нет)
Комментарии:
1. Есть ли какой-либо способ сделать собственный способ? пример был бы очень полезен. @Coding Edger
Ответ №2:
var ParshedArray = {}
var dates = []
result.forEach(function (row) {
var a = row.date.getFullYear()
var b = row.date.getMonth() 1
var c = row.date.getDate()
var d = a "-" b "-" c
console.log(d)
var objDate = ParshedArray[d]
if (!objDate) {
objDate = {
Date: d,
Massages: []
}
ParshedArray[row.date] = objDate
dates.push(objDate)
}
objDate.Massages.push({
id: row.id,
text: row.text,
date: row.date
})
})
console.log(dates)
Комментарии:
1. Ваш ответ может быть улучшен путем добавления дополнительной информации о том, что делает код и как это помогает OP.