【发布时间】:2015-09-22 21:12:19
【问题描述】:
当用户提交表单时,服务器应该会收到更新 poll 数据库的 PUT 请求。奇怪的是,在我的开发控制台中,我可以看到 Poll.update 的回调被立即调用,但 PUT 请求需要 120000 毫秒。然后即使开发控制台显示一个成功的 PUT 请求,数据库也没有更新,我的 .success 回调也永远不会被调用。
更新了 [object 对象]
PUT /api/polls/5599725069753a7711fd4274/0 200 120083ms
在我的浏览器中,我只看到一个没有状态码的 PUT 请求。我没有看到任何错误消息。
投票控制器的路由:
var express = require('express');
var controller = require('./poll.controller');
var router = express.Router();
router.put('/:id', controller.update);
module.exports = router;
Mongoose Poll 控制器:
exports.update = function(req, res) {
var update = {$set: {'poll_name': 'Poll has been updated'}};
Poll.update(req.params.id, update, function(err, num, doc) {
if(err) console.log(err);
else {
console.log('Updated ' + doc); // This is logged after vote is submitted
}
});
};
点击提交时调用的 Angular 代码:
$scope.addVote = function() {
$http.put('api/polls/' + $scope._id).success(function(result) {
console.log('Vote submitted'); //This is never called
}
);
};
【问题讨论】:
-
你能在调用中添加错误函数,这样你就可以通过调试它来找出错误背后的原因
.error(function(data, status, headers, config) { console.log('Vote submitted'); //This is never called } ) -
如果你不调用 "res.end" 或者更好的 "res.json" 调用将永远不会关闭,实际上进入了 express 为调用设置的超时时间。
标签: javascript angularjs node.js mongodb mongoose