MongoDB, Node: запрос полей ISODate с запросом, который не создается непосредственно в операции поиска - PullRequest
0 голосов
/ 10 апреля 2020

Я использую nodejs с официальным драйвером mongodb .

У меня есть документы со свойством даты, хранящимся как тип ISODate.

Запрос построен заранее и хранится в виде строки ex. '{createdAt: {$gte: "FROM_DATE", $lte: "TO_DATE"}}' и передается на сервер вместе с переменными для fromDate и toDate.

Там запрос анализируется с использованием json5 и "FROM_DATE" заменяется на new Date(fromDate) и таким же для других.

Проблема в том, что new Date(fromDate) всегда хранится в виде строки, и в итоге я получаю следующий запрос:

{createdAt: {
  $gte: 'Tue Mar 10 2020 22:23:51 GMT+0100 (Central European Standard Time)',
  $lte: 'Thu Apr 09 2020 22:23:51 GMT+0200 (Central European Summer Time)'
}}

, который в качестве строки не будет запрашивать формат ISODate.

Это просто потому, что я заменяю строку, она возвращается как строка по умолчанию или в чем проблема? Спасибо.

Ответы [ 2 ]

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

Вы можете использовать функцию toISOString при создании даты, как показано ниже

const date = new Date('01-JAN-2020');
console.log(date)
//Wed Jan 01 2020 00:00:00 GMT-0600 (Central Standard Time)

const newDate = new Date('01-JAN-2020').toISOString();
console.log(newDate)
//2020-01-01T06:00:00.000Z
0 голосов
/ 10 апреля 2020

Я понял проблему. Функция .replace() всегда заменяет строку на строковый результат.

Я нашел решение, чтобы избежать .replace() здесь, если у кого-то есть такая же проблема - { ссылка }.

...