экспресс DELETE маршрут ведет себя странно?Неожиданный токен 'n' - PullRequest
0 голосов
/ 25 сентября 2018

маршрут удаления:

router.delete('/users/:name' , function (req, res, next) {
    User.deleteOne({name: req.params.name}).then (function (user) {
        console.log('DELETED / ', req.params.name);
        res.send('DELETED / ', req.params.name);
    }).catch (next)
});

router.get и router.post под одной и той же '/ users /' работают без проблем.

При попытке получить странную ошибкуэто,

{
    "error": "Unexpected token n in JSON at position 3"
}

, хотя у меня есть ответ о состоянии 200 OK.Есть идеи, что происходит?Я пытаюсь в почтальоне.

ОБНОВЛЕНИЕ:

Урок, полученный здесь.Убедитесь, что ваши методы тестирования на самом деле правильны .

Я отправлял другой заголовок, который каким-то образом перепутался в почтальоне, что вызывает ошибки.Поначалу это было трудно заметить, но я щелкнул по настройке, которую я обнаружил там, как странная дополнительная огромная партия JSON, отправляемая обратно.Хотя на первый взгляд все казалось ок

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

На основе ссылки Express API res.send () :

Если параметр является массивом или объектом, Express отвечает представлением JSON

Ваш код выше, кажется, отправляет строку "DELETED / " назад.Возможно, именно поэтому ваш код JS вызывает ошибку синтаксического анализа JSON.

Попробуйте заменить оператор res.send на следующий:

res.send({msg : 'DELETED / ', user: req.params.name});

Надеюсь, это поможет.

0 голосов
/ 25 сентября 2018

Попробуй так:

router.delete('/users/:name' , function (req, res) {
    User.deleteOne({name: req.params.name})
    .exec()
    .catch (err => res.status(500).send(err) )
    .then (function () {
        console.log('DELETED / ', req.params.name);
        res.send('DELETED / ', req.params.name);
    })
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...