快递DELETE路线代理奇怪吗?意外的令牌“ n”

时间:2018-09-25 14:46:54

标签: node.js mongodb express mongoose

删除路径:

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)
});

在同一'/ users /'下的router.getrouter.post没问题。

尝试此操作时出现一个奇怪的错误,

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

尽管我的状态响应为200 OK。知道发生了什么吗?我正在尝试邮递员。

更新:

教训在这里学会了。确保您的测试方法实际上是正确

我正在发送一个不同的标头,该标头在邮递员中以某种方式混淆,从而导致错误。一开始很难注意到,但是单击我在那里发现的设置,因为它被发送回了一个奇怪的特大JSON批处理。即使乍看之下,一切似乎都还不错。

2 个答案:

答案 0 :(得分: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);
    })
});

答案 1 :(得分:1)

基于Express API reference of res.send()

  

当参数是数组或对象时,Express会以JSON表示形式进行响应

您的上述代码似乎将字符串"DELETED / "发回了。也许这就是您的JS代码引发JSON解析错误的原因。

尝试用以下内容替换res.send语句:

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

希望这会有所帮助。