2016-11-18 76 views
0

我使用Ionic构建了一个混合应用程序。 目前我使用PHP和MySQL作为后端。 正如我告诉自己这是非常旧的风格,新的方式是NodeJS与expressJS和MongoDB。 不幸的是,有成千上万的关于如何构建MEAN应用程序的教程(MongoDB,ExpressJS,AngularJS和NodeJs)。 这并不能帮助我很多,因为我不知道如何将NodeJS集成到我现有的Ionic应用程序中。 我只能通过将POST请求更改为新的NodeJS服务器而不是PHP脚本来连接它们吗?在Ionic中包含NodeJs

我看到了一些很酷的方式,其中NodeJS的路由直接与应用程序挂钩。 这怎么可能?

一样,如果要前往www.testapp.com/test例如

app.get('/test', function (req, res) { 
    console.log('Hello World!') 
}) 

我想打电话给这个例如。 这与Ionic结合的可能性如何?

非常感谢。

+0

我相信你可以执行,只是调用一个REST API。所以你可以让nodeJS实例作为后端运行,并且离子可以访问它。 –

回答

2

为此,您可以使用ExpressJS(用于Node.js的快速,非选择性,极简主义Web框架)。

1)安装快捷

$ npm install express --save 

2)创建简单的API。把这个server.js

var express = require('express') 
var app = express() 

app.get('/test', function (req, res) { 
    res.send('Hello World!') 
}) 

app.listen(3000, function() { 
    console.log('Example app listening on port 3000!') 
}) 

如果你使用MySQL(https://www.npmjs.com/package/mysql),然后使用这个

var express = require('express') 
    var mysql = require('mysql') 
    var app = express() 

    app.get('/', function (req, res) { 
     res.send('Hello World!') 
    }) 


     var pool = mysql.createPool({ 
      host: 'localhost', 
      user: '', 
      password: '', 
      database: '' 
     }); 

     app.listen(3000, function() { 
      console.log('Example app listening on port 3000!') 
     }) 

    app.get('/partners', function(req, res,next){ 

    pool.getConnection(function(err, connection) { 

     if (err) { 
      console.error("An error occurred: " + err); 
     } 

     var query = "SELECT * FROM partners ORDER BY idpartner DESC"; 

     var table = ["tableName"]; 

     query = mysql.format(query,table); 

     connection.query(query,function(err,rows){ 

      if (err) {    
       return next(err); 
      } else { 
       res.json({ 
        success: true, 
        partners : rows 
       }); 
      } 
      connection.release(); 
     }); 
    }); 
}); 

3)以CMD或Git的Bash的运行API。

$ node server.js 

4)测试API直接在Web浏览器或Postman(增压您的API的工作流程。构建,测试和更快的记录您的API)。

访问http://localhost:3000/testhttp://localhost:3000/partners

5)使用API​​ 在离子应用

$scope.getPartners = function() { 
     $http.get("http://localhost:3000/partners", { params: { "key1": "value1", "key2": "value2" } }) 
      .success(function(response) { 
       $scope.firstname = response.firstname; 
       $scope.lastname = response.lastname; 
      }) 
      .error(function(response) { 
       alert("ERROR"); 
      }); 
    } 
+0

非常感谢你的非常详细的答案。我只剩下一个问题。我该如何使用NodeJS服务器连接应用程序,以便让我们说,如果用户不愿意/合作伙伴,服务器将自动执行适当的功能......你知道我的意思吗?我是否必须在运行服务器的同一端口上执行应用程序才能将它们连接起来? – Anokrize

+0

@Anokrize像这样的'http:// localhost:3000/partners'这样的每一个URL都是一个API,可以用于从网站到混合移动应用程序的任何地方。生产中使用的API需要位于Web服务器(例如'pm2 start server.js'),例如'http://192.168.0.111:3000/partners',然后每个人都可以使用。服务器和应用程序是完全独立的,它们将通过来自Ionic控制器的GET,PUT,POST,DELETE请求连接它们的唯一方式。服务器在运行时会不断地通过'$ http.get','$ http来监听你的应用请求。放','$ http.post','$ http.delete'。 –

相关问题