未处理的拒绝(错误):请求失败,状态代码为 404
Unhandled Rejection (Error): Request failed with status code 404
我正在尝试学习 MERN/CRUD,但是当我尝试 POST 我的数据库时 运行 遇到了问题。尝试通过 Insomniac 访问它给我一个 'cannot POST /users' 错误,并且控制台给我一个 'Unhandled Rejection (Error): Request failed with status code 404' 错误。
app.js
let express = require('express'),
mongoose = require('mongoose'),
dbConfig = require('./database/db'),
cors = require('cors');
const userRoute = require('./routes/user.route');
mongoose.Promise = global.Promise;
mongoose.connect(dbConfig.db, {
useNewUrlParser: true,
useUnifiedTopology: true
}).then(() => {
console.log('Connection established with database...') },
error => { console.log(`Error when connecting to database: ${error}`);
})
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cors());
app.use('/users', userRoute);
const port = process.env.PORT || 4000;
const server = app.listen(port, () => {
console.log(`Successfully connected on port: ${port}`)
});
create-user-component.js
的一部分
onSubmit(e) {
e.preventDefault();
const userObject = {
firstName: this.state.firstName,
lastName: this.state.lastName,
email: this.state.email
};
axios.post('http://localhost:4000/users', userObject)
.then(res => console.log(res.data));
this.setState({ firstName: '', lastName: '', email: '' });
}
user.route.js
let mongoose = require('mongoose'),
express = require('express'),
router = express.Router();
let userSchema = require('../models/User');
// CREATE/POST User
router.route('/users').post((req, res, next) => {
userSchema.create(req.body, (error, data) => {
if (error) {
return next(error)
} else {
console.log(data)
res.json(data)
}
})
});
router.route('/users').get((req, res) => {
userSchema.find((error, data) => {
if (error) {
return next(error);
} else {
res.json(data);
}
})
})
router.route('/users/:id').get((req, res) => {
userSchema.findById(req.params.id, (error, data) => {
if (error) {
return next(error);
} else {
res.json(data);
}
})
})
module.exports = router;
你能这样试试吗?通过从路由中删除 users
语句。由于您已经在 app.use('/users', userRoute);
中定义了它,因此在 users.route.js 中定义的所有路由将默认以 users
开头。
let mongoose = require('mongoose'),
express = require('express'),
router = express.Router();
let userSchema = require('../models/User');
// CREATE/POST User
router.route('/').post((req, res, next) => {
userSchema.create(req.body, (error, data) => {
if (error) {
return next(error)
} else {
console.log(data)
res.json(data)
}
})
});
router.route('/').get((req, res) => {
userSchema.find((error, data) => {
if (error) {
return next(error);
} else {
res.json(data);
}
})
})
router.route('/:id').get((req, res) => {
userSchema.findById(req.params.id, (error, data) => {
if (error) {
return next(error);
} else {
res.json(data);
}
})
})
我正在尝试学习 MERN/CRUD,但是当我尝试 POST 我的数据库时 运行 遇到了问题。尝试通过 Insomniac 访问它给我一个 'cannot POST /users' 错误,并且控制台给我一个 'Unhandled Rejection (Error): Request failed with status code 404' 错误。
app.js
let express = require('express'),
mongoose = require('mongoose'),
dbConfig = require('./database/db'),
cors = require('cors');
const userRoute = require('./routes/user.route');
mongoose.Promise = global.Promise;
mongoose.connect(dbConfig.db, {
useNewUrlParser: true,
useUnifiedTopology: true
}).then(() => {
console.log('Connection established with database...') },
error => { console.log(`Error when connecting to database: ${error}`);
})
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cors());
app.use('/users', userRoute);
const port = process.env.PORT || 4000;
const server = app.listen(port, () => {
console.log(`Successfully connected on port: ${port}`)
});
create-user-component.js
的一部分onSubmit(e) {
e.preventDefault();
const userObject = {
firstName: this.state.firstName,
lastName: this.state.lastName,
email: this.state.email
};
axios.post('http://localhost:4000/users', userObject)
.then(res => console.log(res.data));
this.setState({ firstName: '', lastName: '', email: '' });
}
user.route.js
let mongoose = require('mongoose'),
express = require('express'),
router = express.Router();
let userSchema = require('../models/User');
// CREATE/POST User
router.route('/users').post((req, res, next) => {
userSchema.create(req.body, (error, data) => {
if (error) {
return next(error)
} else {
console.log(data)
res.json(data)
}
})
});
router.route('/users').get((req, res) => {
userSchema.find((error, data) => {
if (error) {
return next(error);
} else {
res.json(data);
}
})
})
router.route('/users/:id').get((req, res) => {
userSchema.findById(req.params.id, (error, data) => {
if (error) {
return next(error);
} else {
res.json(data);
}
})
})
module.exports = router;
你能这样试试吗?通过从路由中删除 users
语句。由于您已经在 app.use('/users', userRoute);
中定义了它,因此在 users.route.js 中定义的所有路由将默认以 users
开头。
let mongoose = require('mongoose'),
express = require('express'),
router = express.Router();
let userSchema = require('../models/User');
// CREATE/POST User
router.route('/').post((req, res, next) => {
userSchema.create(req.body, (error, data) => {
if (error) {
return next(error)
} else {
console.log(data)
res.json(data)
}
})
});
router.route('/').get((req, res) => {
userSchema.find((error, data) => {
if (error) {
return next(error);
} else {
res.json(data);
}
})
})
router.route('/:id').get((req, res) => {
userSchema.findById(req.params.id, (error, data) => {
if (error) {
return next(error);
} else {
res.json(data);
}
})
})