我在MEN堆栈(MongoDB,Express和Node)上运行数字海洋服务器,并注册表格: http://45.55.177.167:3000/register
如果您尝试从下拉列表中选择一个选项,我收到以下错误:
GET http://45.55.177.167:3000/price?name=pro&cycle=monthly net::ERR_CONNECTION_REFUSED
我想知道为什么会这样?我希望错误消失并得到回复,以便价格相应变化。
我的AJAX方法:
$.get('/price', parameters, function(data) {
callback(data.price);
});
路线:
app.route('/price').get(plans.getPrice);
控制器:
var param_name = req.query.name;
var param_cycle = req.query.cycle;
var query = param_name + "_" + param_cycle;
Plan.findByName(query, function(err, selected_plan) {
var formatted_price = format_price(selected_plan.price) + '.00';
res.send({price: formatted_price});
});
这在我的localhost上正常工作,但是当我将它部署到Droplet时,我收到了错误。如果需要澄清,请告诉我。
答案 0 :(得分:2)
检查你的IP后,我确定你的问题是数据。您收到错误“拒绝连接”,因为该应用程序没有对其正在运行的预期对象参数进行任何健全性测试。如果没有数据,尝试访问未定义的属性会导致错误,导致应用程序无法中断并返回您在客户端中看到的错误。
我们没有更改任何代码来解决此问题。您的项目可以被视为已完成。
将数据从本地mongo db集合迁移到远程主机解决了该问题。正如我演示的那样,有一个简单的解决方案可以快速迁移简单的数据结构:在命令行上连接到mongo,选择数据库,以及find()
每个集合。正如您所注意到的,它们只是JSON对象,可以通过最少的修改复制到新远程目标的insert()
语句。
对于数据量较多的情况而言,这不是一个明智的解决方案,而不是简单的数据集中有限的数据;你想使用程序化解决方案,例如将数据库转储为比我们在这里工作的更大的数据。