Brug det faktiske datoobjekt til din forespørgsel, ikke streng, som du gør i øjeblikket. Fordi mongo gemmer datoer pakket med ISODate
hjælperen og det underliggende BSON (lagerdataformatet brugt af mongo native) har en dedikeret datotype UTC datetime, som er et 64 bit (altså 8 byte) fortegnet heltal, der angiver millisekunder siden Unix-tidsepoken, din forespørgsel returnerer ikke noget som det vil sammenligne datofelterne i mongo med en ISO-formateret streng.
Så slip toISOString()
konvertering og brug datoobjektet:
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);
});
Endnu bedre, du kan bruge momentjs
plugin, der har en meget intuitiv og nem datetime manipulation API. En metode, du kan bruge, er subtract()
funktion for at hente datoobjektet n
antal dage siden:
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);
});