Pro dotaz použijte objekt skutečného data, nikoli řetězec, jak to děláte nyní. Protože mongo ukládá data zabalená pomocí ISODate
helper a základní BSON (formát dat úložiště používaný mongo nativně) má vyhrazený typ data UTC datetime, což je 64bitové (tedy 8 bajtové) celé číslo se znaménkem označující milisekundy od doby Unixu, váš dotaz nevrací nic jako bude to porovnávat pole data v mongo s řetězcem ve formátu ISO.
Vypusťte tedy toISOString()
konverzi a použijte objekt data:
if (data.date) {
const date = new Date();
const dateRange = data.date.slice(0, -1); // strip the "d" from "7d"
date.setDate(date.getDate() - dateRange);
query.start = { $lte: date };
console.log(query);
}
Call.find(query, function (error, docs) {
if (error) callback(error, null);
callback(null, docs);
});
Ještě lépe, můžete použít momentjs
plugin, který má velmi intuitivní a snadné rozhraní API pro manipulaci s datem a časem. Jednou z metod, kterou můžete použít, je subtract()
funkce pro získání objektu data n
počet dní před:
if (data.date) {
const dateRange = data.date.slice(0, -1); // strip the "d" from "7d"
const date = moment().subtract(dateRange, "days");
query.start = { $lte: date };
console.log(query);
}
Call.find(query, function (error, docs) {
if (error) callback(error, null);
callback(null, docs);
});