2016-08-14 53 views
1

原諒我的無知,但我更多的是C#開發人員。這是我的第一個NodeJS程序。我正在嘗試編寫一個程序,讓我的程序在我的node.js服務器上調用GET。當服務器收到這個請求時,我希望它從MongoDB發送最新的條目並立即刪除它,這樣它就不能被重用。我希望這可以在服務器端完成。檢索最新的條目,然後用MongoDB和Mongoose馬上刪除它?

這裏是我有如下,

router.get('/', function(req, res, next) { 
     Todo.findOne({}, {}, { sort: { '_id' : -1 } }, function(err, post) { 
     res.json(post); 
     Todo.remove({_id: -1}); 
     }); 
    }); 

回答

1

考慮使用findOneAndRemove() API,它是一個原子更新發出一個MongoDB的findAndModify remove命令,因此總是返回刪除的文檔。使用sort選項來選擇要刪除的文件,因爲多個文檔將被查詢將返回:

router.get('/', function(req, res, next) { 
    var query = {}, 
     options = { "sort": { "_id": -1 } }; // or { "sort": "-_id" } 
    Todo.findOneAndRemove(query, options, function(err, post) { 
     if (err) console.error(err); 
     res.json(post); 
    }); 
}); 
+0

MongoError:不能同時指定新=真,並刪除= TRUE; '刪除'總是返回已刪除的文件 –

+0

我的壞,沒有機會測試 – chridam

+1

不道歉,你是一個很好的幫助。 –

相關問題