TypeError:无法读取未定义的属性电子邮件

时间:2018-11-27 20:33:30

标签: javascript node.js express routes

我仍在尝试了解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())

4 个答案:

答案 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