NodeJS -> SQL Server 2019 连接问题

问题描述 投票:0回答:1

我正在尝试创建一个测试注册页面。我已经能够让一切正常工作,并且服务器似乎已正确连接。

这是我的代码:

const express = require('express');
const bodyParser = require('body-parser');

const app = express();
const port = 3000;

// Middleware
app.use(bodyParser.json());

var Connection = require('tedious').Connection;  
    var config = {  
        server: 'XXXXXXXXXXXXXXXXXX',  //update me
        authentication: {
            type: 'default',
            options: {
                trustServerCertificate: true 
            }
        },
        options: {
            encrypt: false,
            database: 'XXXXXXX',  //update me
            port: XXXXXXX
        }
    };  

    var connection = new Connection(config);  

    connection.connect(); 

    connection.on('connect', function(err) {  
        // If no error, then good to proceed.
        console.log("Connected"); 
        ExecuteFunction();

    });

    connection.on('debug', function(err) { console.log('debug:', err);});
    
    var Request = require('tedious').Request  
    var TYPES = require('tedious').TYPES; 

        app.get('/signup', (req, res) => {
            res.sendFile("XXXXXXXXXXXXXXXXXXXXX");
        });

        function ExecuteFunction() {        
        // Route to handle signup request
        app.post('/signup', (req, res) => {
            const { username, email, password } = req.body;

        var request = new Request('INSERT INTO Users (Username, Email, PasswordHash) VALUES (@username, @email, @password)', function(err) {  
         if (err) {  
            console.log("Error:", err);}  
        });  

        request.addParameter('Username', TYPES.VarChar, username);  
        request.addParameter('Email', TYPES.NVarChar, email);  
        request.addParameter('PasswordHash', TYPES.VarChar, password);  
        request.on('row', function(columns) {  
            columns.forEach(function(column) {  
              if (column.value === null) {  
                console.log('NULL');  
              } else {  
                console.log(" New Signup " + column.value);  
              }  
            });  
        });
        request.on("requestCompleted", function (rowCount, more) {
    });
        connection.execSql(request);  
    });
    }

app.listen(port, () => {
    console.log(`Server running on port ${port}`);
});

该文件应该创建本地节点服务器并连接到 SQL Server。然后它应该等待来自注册网页的请求。一旦它收到请求,就会将其发送到 SQL Server。

当前的问题是它连接并创建了本地节点服务器,但立即进入最终状态并且不允许新的请求。 SQL Server 配置可能是错误的

SentLogin7WithStandardLogin
,但我无法找到任何有关此内容的资源。

我是 SQL Server / Nodejs 新手,任何帮助将不胜感激!

每当我尝试使用连接调试运行它时,我都会收到以下消息:

Server running on port 3000
debug: connected to XXXXXXXXXXXXXXXX
debug: State change: Connecting -> SentPrelogin
debug: State change: SentPrelogin -> SentLogin7WithStandardLogin
Connected
debug: State change: SentLogin7WithStandardLogin -> Final
debug: connection to XXXXXXXXXXXXXXXX closed
debug: State is already Final

node.js sql-server
1个回答
0
投票

尝试加密:true,如果不起作用,请尝试查看 SQL 数据库的日志。

也尝试一下以帮助调试:


connection.on('connect', function(err) {
    if (err) {
        console.error("Connection Failed: ", err);
    } else {
        console.log("Connected");
        ExecuteFunction();
    }
});

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.