【发布时间】:2016-11-08 11:32:51
【问题描述】:
我正在尝试使用 MongoDB、Angular、NODE.js 和 Express 创建一个简单的留言板。
由于某种原因,我第一次调用 getMessages() 时一切正常。 但是当我在 postMessage() 之后调用 getMessages() 时,没有发送 GET 请求。
这些是我的路线:
app.get('/api/message', function(req, res) {
Message.find({}).exec(function(err, result) {
res.send(result);
});
});
app.post('/api/message', function(req, res) {
console.log(req.body);
var message = new Message(req.body);
message.save();
res.status(200).send('Message added');
})
这是我的角度控制器:
(function() {
'use strict';
angular
.module('app')
.controller('MainController', mainController);
function mainController(navigationFactory, $http, $timeout, apiFactory, $scope) {
var that = this; // jshint ignore: line
function init() {
that.getMessages();
}
that.postMessage = function() {
apiFactory.postMessage(that.message).then(function() {
console.log('Posted from controller'); //gets logged
that.getMessages();
});
//that.getMessages(); <-- also tried this
}
that.getMessages = function() {
console.log('Getting from controller'); //gets logged
$http.get('http://localhost:5000/api/message').then(function(result) {
console.log(result.data); //Logs old result, without new message
that.messages = result.data;
console.log('Set data'); //gets logged
});
}
init();
}
})();
最后我使用工厂发布消息:
factory.postMessage = function(message) {
return $http.post('http://localhost:5000/api/message', {msg: message});
}
我已经打开了一个类似的问题,但由于这是一个不同的问题,我想我会再问一次。
为什么没有 HTTP GET 请求,即使 getMessages() 显然在我的 postMessage() 函数中被调用。我可以看到 getMessages() 是在 console.log() 的帮助下被调用的,但它似乎在发出任何请求之前就返回了。
【问题讨论】:
-
您是否收到任何控制台错误?
-
完全没有错误,我可以在网络选项卡中看到我的 POST 请求,状态为 200,但没有发送 GET 请求。 (仅在网站第一次启动时)
-
请您尝试制作小提琴好吗?
-
'Posted from controller' 登录控制台?
-
是的,我尝试添加大量的 console.log(),一切都在运行:postMessage() 到达 .then 语句 --> getMessages() 在请求之前和请求之后记录控制台。即使在 .then() 内部,我也可以执行 console.log(result.data);它会向我发送数据,但它是一个旧列表,没有新消息
标签: angularjs node.js express asynchronous mean-stack