Express.js CRUD - GET在Chrome中删除后挂起
Express.js CRUD – GET hangs after DELETE in Chrome
我正在玩一个非常简单的express.js 4.0.0 mongoose CRUD应用程序/api。我正在用邮差进行测试。我通过张贴在数据库中创建了一些条目。现在,当我试图删除其中一个,它似乎工作,但我第一次使用GET之后,邮差挂起。在浏览器中也是如此。它只是一直显示加载旋转器。问题不在于mongoose,因为当我使用GET路由时,remove()可以工作。
UPDATE这似乎是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反病毒软件引起的错误。为了避免这种情况,您可以在Sophos的首选项中禁用有关网站的"web保护"。
相关文章:
- JavaScript执行暂时挂起页面
- 删除不起作用的父元素和所有子元素
- 是定义的操作系统睡眠/挂起期间setTimeout的行为
- Chrome浏览器“;挂起”;同时在循环中执行AJAX请求
- fullcalendar在删除导致浏览器挂起的多个事件时速度较慢
- 应用将图表转换为图像的jqplot代码时Chrome挂起
- 如何在不使用Internet Explorer的情况下从未挂起的HTML文件执行程序
- MongoDB collection.find()查询挂起
- 使用子字符串方法时应用程序挂起的原因
- 如何在AngularJS中取消挂起的请求
- 从node.js应用程序调用Mongoose Model.save()时挂起
- Chrome,Safari在从本地存储读取时挂起,而Firefox很好
- IE 10 挂起 XMLHttpRequest 6 分钟,然后响应请求(使用 AngularJS 实现 CRSF)
- JavaScript 确认删除不起作用
- 挂起 JavaScript 键关闭事件
- HERE 映射 JS API v3 集群提供程序挂起,添加许多数据点
- Ajax 调用挂起在 jQuery 中
- AngularJS后续$http删除将保持挂起状态几分钟
- JQuery从其他DropDowns中删除DropDown中的选定选项,停止工作并挂起
- Express.js CRUD - GET在Chrome中删除后挂起