2017-08-11 4 views
-1

Ich habe folgendes Setup.findOne mit Mongoose/MongoDB gibt keine Zeile zurück

Das me = ist eingehende Daten von der Anfrage, aber da es in diesem Beispiel nicht verwendet wird, überspringe ich die Info.

Hinzugefügt das findAndUpdate, das ich versuche zu tun. Warum wird statt findAndUpdate statt einer Aktualisierung ein Insert eingefügt?

app.js

mongoose.connect("mongodb://localhost/time_report"); 

var reportSchema = new mongoose.Schema({ 
    name: String, 
    month: String, 
    date: String, 
    hours: Number, 
    dayNumber: Number, 
    day: String 
}); 
var time = mongoose.model("time", reportSchema); 

Abfrage:

app.get("/test", function(req, res) { 
var me = new time({ 
      name: info[i + 3], 
      month: info[i + 1], 
      date: info[i + 2], 
      hours: info[i], 
      dayNumber: info[i + 4], 
      day: info[i + 5] 
     }); 

    time.findOneAndUpdate(query, update, options, function(err, data) { 
     if (err) { 
      console.log(err); 
     } 
     console.log("data: " + data); 

     found = true; 
    }); 

}

..... Mehr Sachen und Hörer

In MongoDB:

{ "_id" : ObjectId("598d71b20f47692f48eb7393"), "name" : "jocke", "month" : "2017-08", "date" : "2017-08-01", "hours" : 8, "dayNumber" : 2, "day" : "Tuesday", "__v" : 0 } 

Mongoose debug:

[0;36mMongoose: times.findAndModify({ date: '2017-08-31' }, [], { '$set': { hours: null } }, { new: false, upsert: false, fields: {} }) 
[0;36mMongoose: times.insert({ name: '', month: '2017-08', date: '2017-08-31', hours: null, dayNumber: 4, day: 'Thursday', _id: ObjectId("598d7ef69386343b3035192f"), __v: 0 }) 
+0

* "Die console.log wird nie in diesem Szenario ausführen." *, Was bedeutet, das ', wenn (err) 'kehrt wahr zurück. Also, was ist der Fehler? –

+1

Warum erstellen Sie Instanz mit neuen für das Finden des Elements –

+0

Es gibt keinen Fehler, es wird einfach überspringen, da es Nog einen Treffer ist. Die neue Instanz ist für die Zeit, wenn Sie nichts finden. Dann wird es als neues Objekt gespeichert. – user2130951

Antwort

0

Wenn Sie das Mungo Modell Code unten verwenden exportiert nur

var time = require('./models/time'); 

app.get('/test', function(req, res){ 
    // change the search object as per your need like month=2018/07 
    time.findOne(req.body, function(err, doc){ 
    if(err) return handleError(err); 
    res.send(doc) 
    }) 

}) 
Verwandte Themen