Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs HTTP未被激发_Angularjs_Node.js_Express_Asynchronous_Mean Stack - Fatal编程技术网

Angularjs HTTP未被激发

Angularjs HTTP未被激发,angularjs,node.js,express,asynchronous,mean-stack,Angularjs,Node.js,Express,Asynchronous,Mean Stack,我试图用MongoDB、Angular、NODE.js和Express创建一个简单的留言板 由于某种原因,我第一次调用getMessages()时,一切都很顺利。 但当我在postMessage()之后调用getMessages()时,没有发送GET请求 以下是我的路线: app.get('/api/message', function(req, res) { Message.find({}).exec(function(err, result) { res.send(r

我试图用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();

}
})();
我已经提出了一个类似的问题,但由于这是一个不同的问题,我想我会再问一遍


为什么没有HTTP GET请求,即使在my postMessage()函数中显然正在调用getMessages()。我可以看到getMessages()是在console.log()的帮助下被调用的,但它似乎在发出任何请求之前返回。

我认为您可能遇到了一个提升问题,基本上调用了一个尚未声明的函数。如果您尝试像这样更改顺序会发生什么

var that = this; // jshint ignore: line

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
    });   
}

that.postMessage = function() {

    apiFactory.postMessage(that.message).then(function() {
        console.log('Posted from controller'); //gets logged
        that.getMessages(); 
    });
    //that.getMessages(); <-- also tried this

}

function init() {
    that.getMessages();
}

init();
var=this;//jshint忽略:行
that.getMessages=函数(){
console.log('Getting from controller');//记录
$http.get('http://localhost:5000/api/message)。然后(函数(结果){
console.log(result.data);//记录旧结果,不记录新消息
即.messages=result.data;
console.log('Set data');//记录
});   
}
that.postMessage=function(){
apiFactory.postMessage(that.message).then(function(){
console.log('postedfromcontroller');//记录
getMessages();
});

//.getMessages();我认为您可能遇到了一个提升问题,基本上调用了一个尚未声明的函数。如果您尝试像这样更改顺序,会发生什么

var that = this; // jshint ignore: line

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
    });   
}

that.postMessage = function() {

    apiFactory.postMessage(that.message).then(function() {
        console.log('Posted from controller'); //gets logged
        that.getMessages(); 
    });
    //that.getMessages(); <-- also tried this

}

function init() {
    that.getMessages();
}

init();
var that=this;//jshint ignore:line
that.getMessages=函数(){
console.log('Getting from controller');//记录
$http.get('http://localhost:5000/api/message)。然后(函数(结果){
console.log(result.data);//记录旧结果,不记录新消息
即.messages=result.data;
console.log('Set data');//记录
});   
}
that.postMessage=function(){
apiFactory.postMessage(that.message).then(function(){
console.log('postedfromcontroller');//记录
getMessages();
});

//我认为,问题在于服务器端承诺,尝试使用这个

app.get('/api/message', function(req, res) {
    return Message.find({}).exec(function(err, result) {
        if(err) {
          return res.status(500).send(err);
        }
        return res.status(200).json(result);
    });
});

我认为,问题在于服务器端承诺,尝试使用这个

app.get('/api/message', function(req, res) {
    return Message.find({}).exec(function(err, result) {
        if(err) {
          return res.status(500).send(err);
        }
        return res.status(200).json(result);
    });
});


您是否收到任何控制台错误?完全没有错误,我可以在“网络”选项卡中看到我的POST请求,状态为200,但GET请求未被发送。(仅在网站第一次启动时)是否请尝试创建一个提琴?“从控制器发布”登录控制台?是的,我尝试添加控制台加载。log(),所有内容都在运行:postMessage()到达。然后语句-->getMessages()在请求之前和请求之后记录控制台。即使在.then()中,我也可以执行console.log(result.data);它将向我发送数据,但这是一个旧列表,没有新消息。您是否收到任何控制台错误?完全没有错误,我可以在“网络”选项卡中看到我的POST请求,状态为200,但GET请求未被发送。(仅在网站首次启动时)请尝试创建一个fiddle好吗?“从控制器发布”登录到控制台?是的,我尝试添加控制台.log()的加载,并且一切都在运行:postMessage()到达。然后语句-->getMessages()在请求之前和请求之后记录控制台。即使在.then()中,我也可以执行控制台.log(result.data);它将向我发送数据,但这是一个旧列表,没有新的messageNice catch,不幸的是,当我尝试此操作时,没有任何更改:(那么您可以创建一个JSFIDLE吗?是否可以使用JSFIDLE创建一个平均应用程序?如果您尝试添加一个“return”呢对于getMessages函数,如
return$http.get…
我将尝试创建一个JSFIDLE..但您看到的基本上是我所有相关的角度代码。通常我的getMessages也位于apiFactory中,但我将其添加到控制器中,因此帖子不会太长。将return添加到函数中不会改变任何东西…我我已经尝试了很多不同的方法来实现这一点,并且阅读了许多关于承诺的文章,但是HTTP Get请求从未发送,即使是在手动触发getMessages()函数时也是如此。Get请求只是在我刷新websiteNice catch时才发送,不幸的是,在我尝试此操作时没有任何更改:(那么,您可以创建一个JSFIDLE吗?是否可以使用JSFIDLE创建一个平均应用程序?如果您尝试添加一个“return”呢对于getMessages函数,如
return$http.get…
我将尝试创建一个JSFIDLE..但您看到的基本上是我所有相关的角度代码。通常我的getMessages也位于apiFactory中,但我将其添加到控制器中,因此帖子不会太长。将return添加到函数中不会改变任何东西…我我已经尝试了很多不同的方法来实现这一点,并阅读了许多关于承诺的文章,但是HTTP Get请求从未发送,即使手动触发getMessages()也是如此带有按钮的函数。GET请求实际上仅在我刷新网站时发送,但仍然没有更改任何内容,再次说明:我的post和GET功能完全正常。我没有收到任何错误。问题在于当我的factory.getMessages()调用时,它会立即返回旧的响应,甚至不会触发新的GET请求。您可以通过teamviewer共享您的屏幕吗?我在angular config阶段发现了问题…出于某种原因,我启用了http缓存。我关闭了此功能,问题消失了。感谢您的帮助!仍然没有更改任何内容,再次:我的post和get功能齐全。我没有收到任何错误。问题在于调用我的factory.getMessages()时,它会立即返回旧的响应,甚至不会触发新的get请求。你能通过teamviewer共享屏幕吗?我解决了问题。。。