繁体   English   中英

Express.js CRUD –在Chrome中删除后GET挂起

[英]Express.js CRUD – GET hangs after DELETE in Chrome

我正在玩一个非常简单的express.js 4.0.0猫鼬CRUD应用程序/ API。 我正在使用邮递员进行测试。 我通过发布在数据库中创建了一些条目。 现在,当我尝试删除其中一个时,它似乎可以工作,但是此后第一次使用GET时,邮递员会挂起。 在浏览器中也是如此。 它只是一直显示加载微调器。 问题不在于猫鼬,因为当我使用GET路由时,remove()起作用。

更新这似乎是chrome的问题(v。36.0.1985.125)在Firefox和Sarafi中有效。 因此,也许这是一个缓存问题? 我试图像这里建议的那样在邮递员中设置标题,但这没有帮助。

这是代码:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser());
var router = express.Router();


/* 
UPDATE
Suspecting it is a caching issues in chrome, now using this middleware to prevent caching 
*/

router.use(function(req, res, next) {

  res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate');
  res.header('Expires', '-1');
  res.header('Pragma', 'no-cache');
  next();

});
/* UPDATE */

app.use('/', router);

router.get('/', function(req, res){
    res.send('Homepage');
});

var server = app.listen(3000, function(){
    console.log('Listening to port %d', server.address().port);
});

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var Schema = mongoose.Schema;
var BearSchema = new Schema({
    name: String
});
var Bear = mongoose.model('Bear', BearSchema);

router.route('/bears')
    .post(function(req, res){
        var bear = new Bear();
        bear.name = req.body.name;
        bear.save(function(err){
            if(err){
                res.send(err);
                return;
            }
            res.json({ message: 'Bear created' });
        });
    })
    .get(function(req, res){
        Bear.find(function(err, bears){
            if(err){
                res.send(err);
                return;
            }
            res.json(bears);
        });
    });

router.route('/bears/:bear_id')
    .delete(function(req, res){
        Bear.remove({
            _id: req.params.bear_id
        }, function(err, num){
            if(err){
                res.send(err);
                return;
            }
            if( num === 0 ){
                res.json({ message: 'Nothing deleted' });
                return;
            }
            res.json({ message: 'Successfully deleted' });
        });
    });

我在这里找到了解决此问题的方法: https : //github.com/strongloop/express/issues/2069它似乎是由Sophos Anti-Virus引起的错误。 为了避免这种情况,您可以在Sophos的首选项中为有问题的网站禁用“网络保护”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM