Frage

Ich habe Daten in MongoDB so etwas

{ "_id" : ObjectId("4f0ee7310b09f7a254000001"), "createdAt" : ISODate("2012-01-12T23:58:28Z") }
{ "_id" : ObjectId("4f0ee7350b09f7a254000002"), "createdAt" : ISODate("2012-01-12T23:58:28Z") }
{ "_id" : ObjectId("4f0ee855e63cecb654000001"), "createdAt" : ISODate("2012-01-13T00:03:59Z") }
{ "_id" : ObjectId("4f0ee859e63cecb654000002"), "createdAt" : ISODate("2012-01-13T00:04:08Z") }
{ "_id" : ObjectId("4f0ee97c212d70bc54000001"), "createdAt" : ISODate("2012-01-13T00:08:54Z") }
{ "_id" : ObjectId("4f0ee99f212d70bc54000002"), "createdAt" : ISODate("2012-01-13T00:09:27Z") }

Ich möchte nur den Datensatz basierend auf dem Datum anzeigen. Überprüfen Sie meinen Code. Es gibt mir nichts zurück

//dateStr = '120112' or '120113'
var year = '20' + dateStr.substring(0,2);
var month =  dateStr.substring(2,4);
var day =  dateStr.substring(4);
dateStr = new Date(year,month,day,0,0,0);

var nextDate = new Date(year,month,day,23,59,59);

GPSData.find({"createdAt" : { $gte : dateStr, $lte:  nextDate }}, function(err, data) {
    if(err)
        console.log(err); 

    res.writeHead(200, {
            "Content-Type": "application/json",
            "Access-Control-Allow-Origin": "*"
    });
    var body = JSON.stringify(data);
    res.end(body);  //no output here just []
});

Aber auf Mongo -Shell mit diesem Befehl erhalte ich Ergebnisse für das Datum '120112'

db.gpsdatas.find({"createdAt" : {new ISODate("2012-01-12T00:00:00Z"), $lte: new ISODate("2012-01-12T23:59:59Z") }});
War es hilfreich?

Lösung

Ihr Problem ist Ihr Verständnis der Datumsklasse. Ich gehe davon aus, dass Sie versuchen, ein Datumsobjekt für den 12. Januar zu erstellen, aber das neue Datum (2012, 1, 12) ist tatsächlich der 11. oder 12. Februar, abhängig von der lokalen Zeitzone. Daher führt Ihr Code nicht die Abfrage aus, die Sie in der Shell ausführen.

Lesen Sie hier über Details http://www.w3schools.com/jsref/jsref_obj_date.asp

Andere Tipps

Blinde Antwort, ohne dass ich alleine testet: Was passiert, wenn diese Zeile vor der GPSData.find (..) -Linie hinzufügen?

dateStr = dateStr.toString();
nextDate = nextDate.toString();

Versuchen Sie auch eine Konsole.log, um zu sehen, wie die Ausgangszeichenfolge aussieht. Es kann in einem völlig anderen Format sein als erwartet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top