我最近开始将本地测试的Node,mongo,angularjs网站推到DigitalOcean上托管的实时环境中。

我与ajax / http调用不一致。在我的本地计算机上,我能够执行http请求并更新angularjs变量,而这反过来会在前端填充html。一切正常!现在使用相同的环境设置在我的服务器上进行测试,唯一的变量加载新数据的时间是在刷新页面时。

例如(不是我的实际代码):

Node.js-app.js:

app.get('/getlist', requiredAuthentication, function(req, res) {
    list.find({'username':req.session.user.username}, function(err,list) {
    res.send(list);
});});


AngularJS-angular_app.js:

$scope.onClick = function (points, evt) {
    $http.get('/getlist').then(function(response) {
     $rootScope.list = response;});
};


玉-主页:

li(ng-repeat="row in list")


因此,就像我说的那样,这在我的本地计算机上完美运行,但是在我的服务器上,我必须刷新页面以加载新数据,就好像我的变量已缓存在服务器上一样。

任何想法都会有所帮助。

谢谢。!

-------更新-测试v0.1 --------

因此,经过一些深入的测试,这是我发现的结果,但仍未解决。

如果我通过http帖子添加新数据,然后去查看mongo数据库,就会看到新数据。然后,当我单击ng-click通过HTTP检索新数据时,它不返回新数据,而是停留在旧数据上。

如果我将页面保持打开状态10分钟,然后单击按钮,它将检索新数据,这简直是小菜一碟。

听起来像是缓存,但是为什么它在我的本地计算机上无法正常运行?

当查看控制台>网络>状态时。它是代码304,这意味着什么都没有改变?

-------更新-测试v0.2 --------

我现在已经在控制台中使用日志测试了返回数据,并使用ajax jQuery进行了GET,并且遇到了相同的问题/行为,它卡在了相同的数据集合中,所以我的结论必须是该节点.js引起了问题。

-------更新-测试v0.3 --------

好的,我已经完全停止mongo并使用node-mysql将所有内容切换到mysql。再一次,在我的本地计算机上,它像一台机器一样工作,而在我的实际服务器上,它读取新数据的时间却很长。

我使用Sequal PRO访问mysql,并开始向表中添加新条目。
在浏览器中打开我的网址,立即显示新条目。但是在那之后,添加新条目或删除条目仅在10分钟左右的时间内产生了影响。

所以我的结论是,Nodejs像母亲一样缓存,有人知道吗?我真的是唯一一个能体验到这一点的人吗?

最佳答案

尝试使用res.json从节点返回数据

app.get('/getlist', requiredAuthentication, function(req, res)
{
    list.find({'username':req.session.user.username}, function(err,list)
    {
      res.json(list);
     });
});

关于mysql - 服务器Ajax/http调用上的Nodejs无法读取新数据Mongodb,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33078922/

10-14 16:04
查看更多