邮递员无法正常工作的简单删除请求
Simple delete request with Postman not working
使用 node.js、express、mongo db 和 mongoose 创建了一个简单的电话簿应用程序。
Get 和 Post 请求工作正常,Post 请求存储在 Mongo 数据库中。
邮递员的删除请求不起作用,邮递员收到 404 未找到状态。
我想我没有引用要正确删除的条目的 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;
您缺少路径开头的 /
:
router.delete('/api/entries/:id', function(req, res, next) {
/// Here --^
Entry.findByIdAndRemove({_id: req.params.id}).then(function(entry){}).res.send(entry);
});
使用 node.js、express、mongo db 和 mongoose 创建了一个简单的电话簿应用程序。
Get 和 Post 请求工作正常,Post 请求存储在 Mongo 数据库中。
邮递员的删除请求不起作用,邮递员收到 404 未找到状态。
我想我没有引用要正确删除的条目的 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;
您缺少路径开头的 /
:
router.delete('/api/entries/:id', function(req, res, next) {
/// Here --^
Entry.findByIdAndRemove({_id: req.params.id}).then(function(entry){}).res.send(entry);
});