[英]MongoDB, Node: Query ISODate fields with a query not build directly in find operation
我正在使用帶有官方mongodb 驅動程序的 nodejs。
我有一個日期屬性存儲為 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 格式。
僅僅是因為我要替換字符串,默認情況下它會以字符串形式返回,還是問題出在哪里? 謝謝。
創建日期時可以使用toISOString function,如下圖
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
我解決了這個問題。 function .replace()
總是用字符串結果替換字符串。
如果有人有同樣的問題,我在這里找到了避免.replace()
的解決方案 - https://stackoverflow.com/a/40436561/4693613 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.