邮递员的简单删除请求不起作用

Posted

技术标签:

【中文标题】邮递员的简单删除请求不起作用【英文标题】:Simple delete request with Postman not working 【发布时间】:2021-12-04 10:51:40 【问题描述】:

使用 node.js、express、mongo db 和 mongoose 创建一个简单的电话簿应用程序。

Get 和 Post 请求工作正常,Post 请求存储在 Mongo 数据库中。

邮递员上的删除请求不起作用,但是在邮递员上获得 404 not found 状态。

我认为我没有引用要正确删除的条目的 ID。

当我从我的数据库中复制我的一个条目时,这些就是详细信息。

"_id":"$oid":"6169f8bc950d87ffe2f6f033","name":"nick","number":"087-26387784","__v":"$numberInt":"0"

也尝试使用 findOneAndDelete(_id: req.params.id) 但这也没有用。

任何帮助表示赞赏

const express = require('express');

const router = express.Router();

const Entry = require('../models/entry');



router.get('/api/entries', (req, res, next) => 

    Entry.find().then(entries => 

      res.json(entries)

      console.log(entries)

    )

  ) 

// add now entry to db

router.post('/api/entries', function(req, res, next)

    Entry.create(req.body).then(function(entry)

        res.send(entry);

    ).catch(next);

);



router.delete('api/entries/:id', function(req, res, next)

    Entry.findByIdAndRemove(_id: req.params.id).then(function(entry)).res.send(entry);

    );

module.exports = router;




const express = require('express');
const mongoose = require('mongoose');

const password = process.argv[2]

const routes = require('./routes/api');

const app = express();
mongoose.connect(`mongodb+srv://nick:$password@cluster0.tvs6a.mongodb.net/phoneBook?retryWrites=true&w=majority`)
.then(result => 
  console.log('connected to MongoDB')
)
.catch((error) => 
  console.log('error connecting to MongoDB:', error.message)
)
//mongoose.Promise = global.Promise;

const cors = require('cors');

app.use(express.json());
app.use(routes);
app.use(function(err, req, res, next)
  //console.log(err);
  res.status(422).send(error: err.message);

);



const PORT = 3001
app.listen(PORT, () => 
  console.log(`Server running on port $PORT`)
)




const mongoose = require('mongoose');

// Entry Schema
const EntrySchema = new mongoose.Schema(
    name: 
       type: String,
       required: [true, 'Name field is required']
    ,
    number: 
      type: String,
      required: [true, 'Number field is required']
      
  )

  EntrySchema.set('toJSON', 
    transform: (Entry, returnedObject) => 
      returnedObject.id = returnedObject._id.toString()
      delete returnedObject._id
      delete returnedObject.__v
    
  )

// Entry model
const Entry = mongoose.model('entry', EntrySchema);

module.exports = Entry;

【问题讨论】:

【参考方案1】:

您缺少路径开头的/

router.delete('/api/entries/:id', function(req, res, next) 
    /// Here --^
    Entry.findByIdAndRemove(_id: req.params.id).then(function(entry)).res.send(entry);
);

【讨论】:

以上是关于邮递员的简单删除请求不起作用的主要内容,如果未能解决你的问题,请参考以下文章

邮递员请求有效,手动执行则无效。没有错误,只是不起作用

删除邮递员缓存

AWS S3使用邮递员将文件上传到存储桶不起作用

从邮递员推送数据时,sql触发器不起作用

https 在 react-native android 上不起作用

我的 post route 不起作用,postman 认为是 GET 请求