如何在爱奥尼亚移动应用程序中运行Node.js服务器?

如何在爱奥尼亚移动应用程序中运行Node.js服务器?,node.js,mongodb,cordova,ionic-framework,Node.js,Mongodb,Cordova,Ionic Framework,我正在使用MEAN和ionic框架制作一个应用程序,其中nodejs是连接到数据库(mongoDb)的中间件。我需要使用node server.js运行nodejs服务器,并使用ionic-service运行应用程序。这是我的server.js var express = require('express'), app = express(), bodyParser = require('body-parser'), mongoose

我正在使用MEAN和ionic框架制作一个应用程序,其中nodejs是连接到数据库(mongoDb)的中间件。我需要使用
node server.js运行nodejs服务器,并使用
ionic-service
运行应用程序。这是我的server.js

var express          = require('express'),
app              = express(),
bodyParser       = require('body-parser'),
mongoose         = require('mongoose'),
CohortController =require('./www/server/controller/CohortController');

mongoose.connect('mongodb://localhost:27017/persistent');

app.use(bodyParser());

app.get('/api/cohorts',CohortController.list);
app.post('/api/cohorts',CohortController.create);

app.listen(3000,function(){
console.log('Listening...');
})
这是我的app.js。我使用
http://localhost:3000
获取JSON。
app.controller('CohortController',['$scope','$resource',
功能($scope$resource){
变量队列=$resource('http://localhost:3000/api/cohorts');
队列查询(功能(结果){
$scope.cohorts=结果;
});
$scope.courts=[];
$scope.createcourt=函数(){
var队列=新队列();
队列.name=$scope.CohortName;
队列.id=$scope.CohortId;
队列.$save(函数(结果){
$scope.courts.push(结果);
$scope.CohortName='';
$scope.CohortId='';
});
}

}]);您必须让Node.js应用程序在服务器上运行,然后通过其公共IP访问该服务器(从您的Ionic应用程序)。所以,您不会使用
http://localhost:3000
要获取JSON,您可以使用类似
http://123.456.789.123:3000

但是,通常情况下,这不是您(使用端口3000)的方式。另外,您要做的是(例如)将Nginx放在Node.js应用程序()前面,以便从标准HTTP端口(80)为您的api提供服务

因此,基本上,你不能真正“在爱奥尼亚应用程序中运行Node.js服务器”——你这样做的方式是将Node.js应用程序与爱奥尼亚应用程序分开运行,并通过一个标准化的API(通常这些天是你想要实现的)公开其功能,然后通过爱奥尼亚应用程序“消费”(嗯,确切地说,它实际上是Angular应用程序)


希望这有助于澄清一些问题。

您是否也在移动服务器上运行mongodb?我将使用mongolab托管mongodb。我可能需要问另一个问题。假设我希望节点API/服务器允许来自运行在某人手机和网站(example.com)上的ionic应用程序的调用。听起来我需要启用CORS,但我不想让它受到攻击,所以从阅读的角度来看,我们似乎不想这样做:“访问控制允许来源”、“*”。如果我只是想要这个网站,我会做“访问控制允许来源”,“example.com”。从你的回答来看,我仍然不确定如何允许运行ionic应用程序的手机拨打电话。@Beastwood:你可以“简单地”为你的节点应用程序创建RESTAPI,就这样。我只是简单地引用了几句话,因为它不是那么“容易”,但再一次,它也不是火箭科学。谢谢,但我仍然不明白你是如何为ionic应用程序指定访问控制允许来源的。但是,呃,这就是问题所在-你没有。你为什么要这么做?如果您想使API仅对“某些”用户可用,请引入一个
,该键将随每个请求一起发送。在本地测试时,您可能会将这些内容与允许访问源代码混淆。在prod中,我必须在端口80上运行ionic,那么我们如何在端口80上同时使用节点和ionic,解决方案是什么?(我不关心端口,但关心如何完成)?