Gebruik het werkelijke datumobject voor uw zoekopdracht, niet de tekenreeks zoals u op dit moment doet. Omdat mongo datums opslaat die zijn verpakt met de ISODate
helper en de onderliggende BSON (het opslaggegevensformaat dat native door mongo wordt gebruikt) heeft een speciaal datumtype UTC datetime dat een 64 bit (dus 8 byte) ondertekend geheel getal is dat milliseconden aangeeft sinds het Unix-tijdperk, uw zoekopdracht retourneert niets als het zal de datumvelden in mongo vergelijken met een ISO-geformatteerde string.
Dus, laat de toISOString()
. vallen conversie en gebruik het datumobject:
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);
});
Beter nog, je kunt de momentjs
gebruiken plug-in die een zeer intuïtieve en gemakkelijke API voor datetime-manipulatie heeft. Een methode die u kunt gebruiken is de subtract()
functie om het datumobject n
. te krijgen aantal dagen geleden:
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);
});