我仍在尝试了解node.js中的路由, 其他路由,例如route.get(all)和单个ID都可以正常工作,但是“ router.post”给邮递员提供了错误,例如“ TypeError:无法读取未定义的属性电子邮件” ;
对于index.js
const express = require('express');
const redflags_table = require('../db/redflags_table');
const router = express.Router();
router.put('/api/v1/redflag/:id', (req, res) => {
const id = parseInt(req.params.id, 10);
let recordFound;
let itemIndex;
redflags_table.map((record, index) => {
if (record.id === id) {
recordFound = record;
itemIndex = index;
}
});
if (!recordFound) {
return res.status(404).send({
success: 'false',
message: 'todo not found',
});
}
if (!req.body.email) {
return res.status(400).send({
success: 'false',
message: 'title is required',
});
}
const updatedRedflag = {
id: recordFound.id,
email: req.body.email || recordFound.email
};
redflags_table.splice(itemIndex, 1, updatedRedflag);
return res.status(201).send({
success: 'true',
message: 'todo added successfully',
updatedRedflag,
});
});
app.js:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const router = require('./routes/index.js');
app.use(router);
app.use(bodyParser.urlencoded({ extended: true }));
router.use(bodyParser.json())
答案 0 :(得分:2)
重新整理中间件的顺序。
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const router = require('./routes/index.js');
app.use(bodyParser.urlencoded({ extended: true }));
router.use(bodyParser.json())
app.use(router);
答案 1 :(得分:0)
如果您使用的是Mongoose,则可以通过修复选项来解决。例如this mongoose.set('useFindAndModify',false);。
希望您的问题会得到解决。
答案 2 :(得分:0)
您可以通过以下简单步骤解决此问题。
为内容类型安装正文解析器-application / x-www-form-urlencoded
1) npm i --save body-parser
2)进入根文件(如果是index.js),请在路由之前添加这些代码行。
//require body-parser
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: true }))
答案 3 :(得分:0)
2021 年更新
现在 body-parser
已弃用,您可以使用 express
:
import express from 'express'
const app = express()
app.use(express.json({limit: '20mb'}))
app.use(express.urlencoded({ extended: false, limit: '20mb' }))
export default app