Как преобразовать метки времени mongodb в формат дд-мм-гггг, используя mon goose и node.js? - PullRequest
0 голосов
/ 16 апреля 2020

Я работаю над функционалом, где мне нужно отображать метки времени, хранящиеся в mongodb в формате dd-mm-yyyy. Но я не совсем понимаю, как написать запрос, чтобы получить метки времени в требуемом формате.

Ниже приведены примеры данных из выпадающего списка.

/* 1 */
{
    "_id" : ObjectId("5e787e988f3b3f3a240e846e"),
    "status" : true,
    "company" : ObjectId("5e787e988f3b3f3a240e846d"),
    "type" : "ticketstatus",
    "name" : "Open",
    "createdAt" : ISODate("2020-03-23T09:17:12.374Z"),
    "updatedAt" : ISODate("2020-03-23T09:17:12.374Z")
}

/* 2 */
{
    "_id" : ObjectId("5e787e988f3b3f3a240e846f"),
    "status" : true,
    "company" : ObjectId("5e787e988f3b3f3a240e846d"),
    "type" : "ticketstatus",
    "name" : "Closed",
    "createdAt" : ISODate("2020-03-23T09:17:12.374Z"),
    "updatedAt" : ISODate("2020-03-23T09:17:12.374Z")
}

/* 3 */
{
    "_id" : ObjectId("5e7883ce8f3b3f3a240e8472"),
    "status" : true,
    "company" : ObjectId("5e787e988f3b3f3a240e846d"),
    "type" : "ticketpriorities",
    "name" : "High",
    "createdAt" : ISODate("2020-03-23T09:39:26.167Z"),
    "updatedAt" : ISODate("2020-03-23T09:39:26.167Z")
}

Пока используется запрос,

dropdowns.find({"company":ObjectId('5e787e988f3b3f3a240e846d')});

Как правильно выбрать даты? Мне нужно написать запрос или мне нужно манипулировать возвращенными данными из запроса, используя строки кода? Пожалуйста, предложите мне лучший и наиболее используемый способ. Благодаря.

1 Ответ

1 голос
/ 16 апреля 2020

Вы должны форматировать свои даты на стороне клиента, используя такую ​​библиотеку, как moment или date-fns .

Например, с date-fns:

import { format } from 'date-fns'

format(new Date(), "dd-MM-yyyy")
// 16-04-2020

date-fns является библиотекой выбора в наши дни, потому что она модульная, то есть вы можете импортировать только те функции, которые вам нужны (без присоединения ). Обязательно учитывайте часовой пояс вашего конечного пользователя.

Если вы хотите сделать это на стороне сервера, используйте $ dateToString с агрегацией, как указано в комментарии выше:

db.collection.aggregate([
  {
    "$match": {
      company: ObjectId("5e787e988f3b3f3a240e846d")
    }
  },
  {
    "$project": {
      createdAt: {
        $dateToString: {
          format: "%d-%m-%Y",
          date: "$createdAt"
        }
      },
      updatedAt: {
        $dateToString: {
          format: "%d-%m-%Y",
          date: "$updatedAt"
        }
      },

    }
  }
])

Рабочий пример здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...