首页 > 解决方案 > 节点/快递端点 - 抛出意外错误

问题描述

我有一个抛出意外错误的快速端点。我似乎无法弄清楚发生了什么。

这是端点:

const express = require('express'); 
const bodyParser = require('body-parser'); 
const jsonParser = bodyParser.json(); 
const router = express.Router()
const { Article } = require('./model');
const passport = require('passport'); 

router.post('/highlight', jsonParser, (req, res) => {
    const { removeId, addId } = req.body; 

    Article
        .findByIdAndUpdate(removeId, {
            featured: false
        }); 

    return Article
        .findByIdAndUpdate(addId, {
            featured: true
        })
        .then(article => {
            res.status(202).json({ article });
        })
        .catch(err => {
            res.status(404).json({ message: 'No record found' });
        }); 
}); 

这是错误:

SyntaxError: Unexpected token o in JSON at position 1
    at JSON.parse (<anonymous>)
    at parse (/Users/johnseabolt/Desktop/code/PERSONAL/dfpr/node_modules/body-parser/lib/types/json.js:89:19)
    at /Users/johnseabolt/Desktop/code/PERSONAL/dfpr/node_modules/body-parser/lib/read.js:121:18
    at invokeCallback (/Users/johnseabolt/Desktop/code/PERSONAL/dfpr/node_modules/raw-body/index.js:224:16)
    at done (/Users/johnseabolt/Desktop/code/PERSONAL/dfpr/node_modules/raw-body/index.js:213:7)
    at IncomingMessage.onEnd (/Users/johnseabolt/Desktop/code/PERSONAL/dfpr/node_modules/raw-body/index.js:273:7)
    at emitNone (events.js:106:13)
    at IncomingMessage.emit (events.js:208:7)
    at endReadableNT (_stream_readable.js:1056:12)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)

我无法弄清楚这里发生了什么。看起来它可能是 jsonParser 部分,但我有另一个具有 jsonParser 的端点,它工作正常!这是工作端点:

router.post('/create', jwtAuth, jsonParser, (req, res) => {

    const { title, author, content } = req.body;

    if (!title) {
        return res.status(422).json({ message: 'Title is required' }); 
    }

    if (!author) {
        return res.status(422).json({ message: 'Author is required' }); 
    }

    if (!content) {
        return res.status(422).json({ message: 'Content is required' }); 
    }

    return Article
        .create({ title, author, content })
        .then(article => {
            res.status(202).json({ article }); 
        })
        .catch(err => {
            res.status(422).json({ 
                error: err, 
                message: 'There was a problem with your request'
            }); 
        }) 

}); 

谁能看到这里发生了什么?我已经刺了几个小时了,我很难过。

标签: express

解决方案


推荐阅读