我正在玩一个非常简单的express.js 4.0.0 mongoose CRUD应用程序/ api。我正在使用邮递员来测试它。我通过发布在数据库中创建了一些条目。现在,当我尝试删除其中一个似乎工作但是第一次使用GET之后,邮递员挂起。在浏览器中也是如此。它只是一直显示加载微调器。 问题不在于猫鼬,因为当我使用GET路由时,remove()可以正常工作。
更新这似乎是chrome的一个问题(v.36.0.1985.125)在Firefox和Sarafi中它起作用。那么,也许这是一个缓存问题?我尝试在邮递员中设置标题,如建议的here,但它没有帮助。
以下是代码:
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' });
});
});
答案 0 :(得分:0)
我在这里找到了解决这个问题的方法:https://github.com/strongloop/express/issues/2069 它似乎是由Sophos Anti-Virus引起的错误。为了避免它,您可以禁用"网络保护"对于Sophos的偏好中有问题的网站。