2016-11-25 25 views
0

我在nodeJS中的中間件方法有問題。 在這種方法中,我正在查找一個擁有最高自定義ID屬性的相冊,並在排序並獲取最高值後,我創建一個增量++。Mongoose - > findOne - > sort - >如果DB中沒有記錄

一切工作正常,但問題進入階段,當數據庫中沒有記錄。

我想要做的是在沒有記錄時進行默認album.id = 1

我的代碼:

// 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(); 
     } 
    }); 
}); 

感謝您的幫助和提示。

回答

1

只是測試album爲非空。

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

我試過了,但得到的錯誤:「無法讀取空的財產‘身份證’」 –

+0

是的,我的錯, - 這顯然是一個錯誤,因爲沒有專輯記錄可用。但你有線索。 – Thevs

0

這很好。我心中已經完成,與:

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

我不能讓分配album.id = 1,當沒有查詢任何專輯:)

相關問題