2016-11-18 113 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'。 –

相關問題