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

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 ОК. Есть идеи, что происходит? Пробую в почтальоне.

ОБНОВИТЬ:

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

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

2
Robolisk 25 Сен 2018 в 17:46

2 ответа

Лучший ответ

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

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);
    })
});
2
Rémi Becheras 25 Сен 2018 в 14:55

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

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

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

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

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

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

1
Hansdo 25 Сен 2018 в 15:02