[英]Delete last document in MongoDB collection with DELETE request
我是 REST api 的新手,只想使用帶有 mongoose 的 DELETE 路由刪除我的 mongoDB 集合中的最后一個 POST。這里的其他答案沒有解釋如何通過路由執行此操作。僅使用 db object。
這就是我當前的路線(我沒有收到任何錯誤,但沒有刪除):
//DELETE LAST POST
router.delete('/last', async (req,res) => {
try {
const removedPost = await Post.findAndModify({query :{},"sort": { "_id": -1 }, remove:true})
res.json(removedPost)
}catch(err){
res.json({ message: err })
}
})
我也試過用findOneAndDelete()
來做,但它是一樣的,日志中沒有錯誤,200 OK 響應,沒有刪除帖子:
const removedPost = await Post.findOneAndDelete(
{ __v: 0 },
{ sort: { "date": -1 } }
);
正如我從文檔中理解的那樣,我也嘗試過這樣沒有可選的“投影”:
const removedPost = await Post.findOneAndDelete(
{},
{ sort: { "date": -1 } }
);
我在 postman 中調用這條路線: https://ag-sheets-api.herokuapp.com/posts/last ,沒有任何身體。 它的響應是 200 OK 並且:
{
"message": {
"stringValue": "\"last\"",
"kind": "ObjectId",
"value": "last",
"path": "_id",
"reason": {}
}
}
這是其中一個帖子的樣子:
_id:6012f937a892270017007b31
title:"97273282974158320"
date:2021-01-28T17:49:43.582+00:00
__v:0
en1:"<div class="contact_us"><p style="font-size: 16px; font-weight: bold; ..."
en2:"<div class="qw"><div class="qe" data-country="cn.svg"><p class="qr">Ch..."
en3:"<div class="qw"><div class="qe" data-country="iq.svg"><p class="qr">Ir..."
en4:"<div class="qw"><div class="qe" data-country="pe.svg"><p class="qr">Pe..."
en5:"<div class="qw"><div class="qe" data-country="ta.svg"><p class="qr">Tr..."
fr1:"<div class="contact_us"><p style="font-size: 16px; font-weight: bold; ..."
fr2:"<div class="qw"><div class="qe" data-country="cn.svg"><p class="qr">Ch..."
fr3:"<div class="qw"><div class="qe" data-country="iq.svg"><p class="qr">Ir..."
fr4:"<div class="qw"><div class="qe" data-country="pe.svg"><p class="qr">Pe..."
fr5:"<div class="qw"><div class="qe" data-country="ta.svg"><p class="qr">Tr..."
de1:"<div class="contact_us"><p style="font-size: 16px; font-weight: bold; ..."
de2:"<div class="qw"><div class="qe" data-country="cn.svg"><p class="qr">Ch..."
de3:"<div class="qw"><div class="qe" data-country="iq.svg"><p class="qr">Ir..."
de4:"<div class="qw"><div class="qe" data-country="pe.svg"><p class="qr">Pe..."
de5:"<div class="qw"><div class="qe" data-country="ta.svg"><p class="qr">Tr..."
這個問題的大多數 stackoverflow 答案都在下面這樣說,但我不明白如何在 mongoose DELETE 路由中實現,畢竟沒有 db object 嗎? 他們在哪里做這個?:
db.coll.find().sort({_id:-1}).limit(100);
It looks like using limit on the standard mongo remove operation isn't supported though, so you might use something like this to delete the 100 documents:
for(i=0;i<100;i++) {
db.coll.findAndModify({query :{}, sort: {"_id" : -1}, remove:true})
}
你可以這樣嘗試:
let x = await Post.findOne({}).sort({date: -1});
await x.remove();
所以你的路線應該是這樣的:
router.delete("/", async (req, res) => {
try {
let x = await Post.findOne({}).sort({ date: -1 });
await x.remove();
res.status(200).json({ message: "deleted place" })
} catch (err) {
res.json({ message: err });
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.