node.js - 在nodejs中进行api更新时出现错误无法获取/api/course/update/:courseId
问题描述
我是nodejs的新手。我刚刚使用 Nodejs、Hbs、mongoose 和 express 创建了一个 CRUD 项目。在 localhost 上测试更新功能时。我收到 ERROR Cannot GET /api/course/update/:courseId
。我之前尝试过 POSTMAN 测试 API。但一切都好。这是我的代码:
服务器.js
const express = require('express');
const handlebars = require('handlebars');
const exphbs = require('express-handlebars');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const {allowInsecurePrototypeAccess} = require("@handlebars/allow-prototype-access")
const dbConfig = require('./APP/config/db.config');
const app = express();
app.use(bodyParser.urlencoded({extended: true}))
app.use(bodyParser.json())
const db = require('./APP/models');
const Role = db.role;
db.mongoose
.connect(`${dbConfig.URL}`, {
useNewUrlParser: true,
useUnifiedTopology: true,
}).then(() => {
console.log("Successfully connected to the database");
initial();
}).catch(err => {
console.log('Could not connect to the database. Exiting now...', err);
process.exit();
});
app.engine('hbs', exphbs({
handlebars: allowInsecurePrototypeAccess(handlebars),
defaultLayout: 'main',
extname: '.hbs',
layoutsDir: __dirname + '/VIEWS/layouts/'
}));
app.set('view engine','hbs');
app.get('/', (req, res) => {
res.render('home',{msg:'This is home page'})
});
require('./APP/routes/auth.routes')(app);
require('./APP/routes/component.routes')(app);
require('./APP/routes/main.routes')(app);
app.listen(1000, () => {
console.log('Server is running 1000');
})
组件.routes.js
const controller = require('../controllers/component.controller');
const service = require('../routes/index');
module.exports = function (app) {
app.get('/about-us', service.about_us);
app.get('/main-course', service.main_course);
app.get('/add-course', service.add_course);
route.get('/update-course/:courseId', service.update_course)
route.get('/detail-course', service.detail_course)
//API
app.get('/api/course/findAll',controller.findAll)
app.post('/api/course/create', controller.createCourse)
app.put('/api/course/update/:courseId', controller.updateCourse)
app.delete('/api/course/delete/:courseId',controller.deleteCourse)
}
组件控制器.js
const db = require("../models")
const Course = db.course;
exports.updateCourse = function(req, res){
if (!req.body.name) {
return res.status(400).send({message: "Data to update can not be empty"})
}
const courseId = req.params.courseId;
Course.findByIdAndUpdate(courseId, {
name: req.body.name,
// creationTime: new Date().getTime(),
creationTime: req.body.creationTime,
description: req.body.description
},{useFindAndModify : false})
.then(course => {
if (!course) {
return res.status(404).send({message: "Course not found with id"});
}
res.send(course)
}).catch(err => {
return res.status(500).send({message: "Error retrieving note with id"});
});
}
我做错了什么以及如何纠正它?
解决方案
您需要对更新端点执行 PUT 而不是 GET。PUT 方法可以在 URL 之前在邮递员中选择(GET / POST / PUT / DELETE / ....etc)
推荐阅读
- php - “试图获取非对象的属性 'id'” Laravel - Auth::id() 命令
- c# - EPPlus C# 将数据导出到 Excel。表格数据覆盖名称框而不是“插入”并保留其他单元格
- java - 端点无法解析为类型(ws 中的@Endpoint)- Eclipse 编译错误
- scala - 替换列并获取列值的 ltrim
- powershell - 做while循环 - powershell
- php - 拉拉维尔!如何将收藏价值与收藏价值进行比较文本?
- javascript - 渐进式获取或一次全部获取主详细信息
- r - R ggplot 2:如何根据另一个变量设置几何点 alpha?
- css - 在较小的屏幕上制作一个长的 antd 按钮来包裹它的内容
- javascript - 如何从数组中删除错误值?