2016-11-25 1 views
0

Ich habe Probleme mit der Middleware-Methode in nodeJS. In dieser Methode suche ich nach einem Album, das die höchste benutzerdefinierte ID-Eigenschaft hat, und nach der Sortierung und dem höchsten Wert nehme ich ein Inkrement ++ vor.Mongoose -> findOne -> sort -> wenn es keine Datensätze in DB gibt

Alles funktioniert ok, aber Problem tritt in die Phase, wenn keine Datensätze in DB.

Was ich tun möchte, ist eine Standardeinstellung album.id = 1, wenn es keine Datensätze gibt.

Mein Code:

// ID MIDDLEWARE 
newID.use(function (req, res, next) { 
    var _newAlbumID; 
    Album.findOne().sort('-id').exec(function (err, album, newID) { 
     if (err) throw err; 
     else { 
      var test = ++album.id; 
      _newAlbumID = test; 
      console.log("IN: ", test, _newAlbumID); 
      req.body.id = _newAlbumID; 
      next(); 
     } 
    }); 
}); 

Vielen Dank für Hilfe und Hinweise.

Antwort

1

Testen Sie einfach album für nicht leer.

Album.findOne().sort('-id').exec(function (err, album, newID) { 
    if (err) throw err; 
    else if (!album) { 
     ... 
     ... 
     } 
    else { 
     var test = ++album.id; 
     _newAlbumID = test; 
     console.log("IN: ", test, _newAlbumID); 
     req.body.id = _newAlbumID; 
     next(); 
    } 
+0

ich versucht, aber err bekommen: "Can not Eigenschaft 'id' von null lesen" –

+0

Ja, meine Schuld, - es ist offensichtlich ein Fehler, weil kein Album-Eintrag verfügbar ist. Aber du hast eine Ahnung. – Thevs

0

Das war ein guter Punkt. getan I'v dass mit:

else if (!album) { 
      _newAlbumID = 1; 
      req.body.id = _newAlbumID; 
      console.log("NO ALBUM"); 
      next(); 
     } 

I album.id = 1 zuordnen machen kann nicht, wenn es keine in Abfrage irgendein Album ist :)

Verwandte Themen