我最近开始将本地测试的 Node、mongo、angularjs 站点推送到 DigitalOcean 上托管的实时环境。
我的 ajax/http 调用不一致。在我的本地计算机上,我能够执行 http 请求并更新 angularjs 变量,这反过来会填充前端的 html。一切都很好!现在在我的服务器上使用相同的环境设置进行测试,变量加载新数据的唯一时间是当我刷新页面时。
例如(不是我的实际代码):
Nodejs - 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;});
};
Jade - 家:
li(ng-repeat="row in list")
就像我说的,这在我的本地计算机上完美运行,但在我的服务器上我必须刷新页面才能加载新数据,就好像我的变量缓存在服务器上一样。
任何想法都会有帮助。
谢谢!
-------- 更新 - 测试 v0.1 --------
经过一些深入的测试,我发现了这一点,但仍然没有解决。
如果我通过 http post 添加新数据,然后查看我的 mongo 数据库,我会看到新数据。然后,当我单击 ng-click 通过 HTTP 检索新数据时,它不会返回新数据,而是停留在旧数据上。
如果我让页面打开 10 分钟,然后单击按钮,它就会检索新数据,这真是太糟糕了。
听起来像缓存,但为什么它在我的本地完美运行?
查看控制台 > 网络 > 状态时。代码是 304,这意味着没有任何改变?
-------- 更新 - 测试 v0.2 --------
我现在已经使用控制台中的日志测试了返回数据,并且使用 ajax jQuery 执行了 GET,并且我遇到了相同的问题/行为,它停留在相同的数据集合上,所以我的结论必须是 Node.js 导致了这些问题。
-------- 更新 - 测试 v0.3 --------
好吧,我已经完全停止了 mongo 并使用 node-mysql 将所有内容切换到 mysql。再一次,在我的本地它就像一台机器一样工作,而在我的实际服务器上它在读取新数据时很滞后。
我使用 Sequal PRO 访问 mysql,并开始向表中添加新条目。 在浏览器中打开我的网址,它立即显示新条目。但此后,添加新条目或删除条目仅在10分钟左右才显示效果。
所以我的结论是 Nodejs 的缓存就像母亲一样,有人知道更多吗?我真的是唯一一个经历过这种事的人吗?
最佳答案
尝试使用 res.json 从 Node 返回数据
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/