404来自本地托管服务器的“获取”获取请求出错

时间:2016-08-31 01:22:21

标签: javascript html mongodb express crud

我正在使用我学习的原则构建一个简单的博客here(使用Express和MongoDB的CRUD应用程序)。为了编辑以前发布的帖子,我想填充一个文本字段,其中包含从下拉菜单中选择标题的博客文章的内容。这样我就可以轻松地进行更改并提交。

我写了一个基本的'put'获取请求,除了在出现问题时报告错误外什么都不做:

fetch('articles', {method: 'put'})
        .then(  
            function(response) {  
                if (response.status !== 200) {  
                    console.log('Looks like there was a problem. Status Code: ' +  response.status);  
                    return;  
                }

                // Examine the text in the response  
                response.json().then(function(data) {  
                    console.log(data);  
                });  
            }  
        )  
        .catch(function(err) {  
            console.log('Fetch Error :-S', err);  
        });

这里没有错,所以执行了console.log(data)

enter image description here

然而,当我将'put'更改为'get'(并且不做其他更改)时,我收到404错误:

enter image description here

'get'获取请求怎么会导致404错误,但'put'请求不会?我在本地托管这个应用程序,所以我从localhost:3000运行它。我的服务器代码中的“get”,“post”和“put”操作如下所示:

app.get('/', function (req, res) {
    db.collection('articles').find().toArray(function (err, result) {
        if (err) return console.log(err);
        res.render('index.ejs', {articles: result});
    });
});

app.post('/articles', function (req, res) {
    db.collection('articles').save(req.body, function (err, result) {
        if (err) return console.log(err);
        console.log('saved to database');
        res.redirect('/');
    });
});

app.put('/articles', function (req, res) {
    db.collection('articles')
    .findOneAndUpdate({title: 'test title'}, {
        $set: {
            title: req.body.title,
            body: req.body.body
        }
    }, {
        sort: {_id: -1},
        upsert: true
    }, function (err, result) {
        if (err) return res.send(err);
        res.send(result);
    });
});

我想消除这个404错误,因此我可以继续使用'get'请求的最终原因:用以前发布的博客条目的内容填充文本字段。在我完成编辑后,我计划使用'put'请求来完成MongoDB中的更改。

如果您需要任何其他信息,请与我们联系。非常感谢您的建议!

1 个答案:

答案 0 :(得分:2)

您没有GET /articles路线;但是,你确实有GET /路线。

如果您希望GET /articles有效,则应将第一个参数更改为app.get'/articles'