2017-07-19 100 views
1

我正在使用Angular 2和Nodejs連接到SQL Server。如果我簡單地將下面的代碼放在js文件中並使用node test.js通過控制檯運行,代碼將正確刪除記錄。將Nodejs和Angular 2連接到SQL Server 2014

下面是代碼:

var webconfig = { 
    user: 'sa', 
    password: 'test', 
    server: 'localhost', 
    database: 'Test', 

    options: { 
     encrypt: false // Use this if you're on Windows Azure 
    } 
} 

var express = require('express'); 
var sql = require('mssql'); 
var http = require('http'); 

var app = express(); 
var port = process.env.PORT || 4200; 

var connection = new sql.Connection(webconfig, function(err) { 
    var request = new sql.Request(connection); 
    request.query('delete from Employee where Id = 2382', function(err, recordset) { 
     if(err)  // ... error checks 
      console.log('Database connection error'); 

    console.dir("User Data: "+recordset); 
    }); 
}); 


app.listen(port); 
console.log(port+' is the magic port'); 

之後,我在我的角2項目搬到同一個文件到src文件夾(其中index.html文件還存在)。我把同樣的代碼放到一個函數test.js文件這樣的:

function testConnection() 
{ 
var webconfig = { 
      user: 'sa', 
    password: 'test', 
    server: 'localhost', 
    database: 'Test', 

    options: { 
     encrypt: false // Use this if you're on Windows Azure 
    } 
} 

var express = require('express'); 
var sql = require('mssql'); 
var http = require('http'); 

var app = express(); 
var port = process.env.PORT || 4200; 

var connection = new sql.Connection(webconfig, function(err) { 
    var request = new sql.Request(connection); 
    request.query('delete from Employee where Id = 2382', function(err, recordset) { 
     if(err)  // ... error checks 
      console.log('Database connection error'); 

    console.dir("User Data: "+recordset); 
    }); 
}); 


app.listen(port); 
console.log(port+' is the magic port'); 



} 

現在我想打電話給testConnection()從索引頁。我已經把<script src="C:\Users\amandeep.singh\Desktop\Angular\my-app\src\test.js">腳本路徑,並呼籲使用此功能:

<script> 
testConnection(); 
</script> 

索引頁正確執行,但不顯示任何錯誤,也沒有執行命令。我無法理解爲什麼相同的代碼在Nodejs的控制檯中工作,但不在我的index.html中。

幫助將不勝感激。

+0

一個的NodeJS JavaScript代碼不能在瀏覽器中直接執行。 NodeJS代碼應該作爲後端工作。您需要在暴露後端邏輯的NodeJS/Express代碼中編寫Web服務。然後在Angular代碼中,需要通過$ http服務調用Web服務。 – Jay

+0

將您的標記從angularjs更改爲angular,因爲angular 2與angularjs不同。 – Wernerson

回答

1

您無法在瀏覽器中運行節點應用程序。 Nodejs是一個在您的操作系統上的Google V8 Javascript VM中運行Javascript的應用程序,它應該是一個後端系統(至少在Web開發堆棧中)。

所以你基本上必須在網絡服務器上運行你的節點程序,並從Angular應用程序發出你的API請求。

在互聯網上有幾個教程可以幫助你解決這個問題。

下面是官方文檔角angular.io

+0

謝謝Wernerson,現在我已經在Node中創建了API並在項目中使用它。 –