【问题标题】:Connect Nodejs and Angular 2 to SQL Server 2014将 Nodejs 和 Angular 2 连接到 SQL Server 2014
【发布时间】:2017-12-24 08:20:14
【问题描述】:

我正在使用 Angular 2 和 Nodejs 连接到 SQL Server。如果我只是将以下代码放在 js 文件中并使用node test.js 通过控制台运行它,则代码会正确删除记录。

代码如下:

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');

之后,我将同一个文件移动到我的 Angular 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 中无效。

我们将不胜感激。

【问题讨论】:

  • 无法在浏览器中直接执行 NodeJS JavaScript 代码。 NodeJS 代码应该作为后端工作。您需要在暴露后端逻辑的 NodeJS/Express 代码中编写 Web 服务。然后在Angular代码中,需要通过$http服务调用web-service。
  • 将标签从 angularjs 更改为 angular,因为 angular 2 与 angularjs 不同。

标签: javascript node.js angular sql-server-2014 angular2-forms


【解决方案1】:

您不能在浏览器中运行 Node 应用程序。 Nodejs 是一个在您的操作系统上运行 Google 的 V8 Javascript VM 中的 Javascript 的应用程序,旨在成为一个后端系统(至少在 Web 开发堆栈中)。

所以你基本上必须在网络服务器上运行你的 Node 程序并从 Angular 应用程序发出你的 API 请求。

互联网上有几个教程可以帮助您解决这个问题。

这里是 Angular 官方文档angular.io

【讨论】:

  • 感谢 Wernerson,现在我已经在 Node 中创建了 API 并在项目中使用它。
猜你喜欢
  • 2023-03-10
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-30
相关资源
最近更新 更多