2017-07-19 99 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并在项目中使用它。 –