Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用mssql npm包连接到SQL Server_Node.js_Aws Lambda_Node Modules - Fatal编程技术网

Node.js 使用mssql npm包连接到SQL Server

Node.js 使用mssql npm包连接到SQL Server,node.js,aws-lambda,node-modules,Node.js,Aws Lambda,Node Modules,我正在尝试编写一个lambda,它将从csv文件中获取值并将它们插入SQL Server中的数据库。用户帐户需要使用Windows身份验证连接到SQL Server以执行插入 我找到了允许连接的mssqlnpm模块,但是当我尝试运行lambda时,我得到以下错误 “代码”:“ELOGIN”, “消息”:“用户'domain\\user'登录失败。” 这是我在lambda中使用的代码: "use strict"; const AWS = require('aws-sdk'); const conv

我正在尝试编写一个lambda,它将从csv文件中获取值并将它们插入SQL Server中的数据库。用户帐户需要使用Windows身份验证连接到SQL Server以执行插入

我找到了允许连接的
mssql
npm模块,但是当我尝试运行lambda时,我得到以下错误

“代码”:“ELOGIN”,
“消息”:“用户'domain\\user'登录失败。”

这是我在lambda中使用的代码:

"use strict";
const AWS = require('aws-sdk');
const converter = require("csvtojson");
const zlib = require('zlib');
const sql = require('mssql');
var s3 = new AWS.S3();


const config = {
    user: 'domain\\user',
    password: 'password',
    server: process.env.SQL_SERVER,
    database: process.env.DATABASE,
    options: {
        trustedConnection: true
    }
};



function unzipS3(keyName, bucketName) {
    return new Promise(async (resolve, reject) => {
        let options = {
            'Bucket': bucketName,
            'Key': keyName
        };

        s3.getObject(options, function (err, res) {
            if (err) return reject(err);

            resolve(zlib.unzipSync(res.Body).toString());
        });
    });
}

function convertToJSON(csvFile) {
    var options = {
        delimiter: ",",
        quote: '"',
        checkType: true,
        output: "json"
    };
    var convertedJson = '';
    return converter(options)
        .fromString(csvFile)
}


exports.handler = async (event, context, callback) => {
    var bucketName = process.env.BUCKET_NAME;
    var prefix = process.env.FOLDER_NAME + '/';
    var keyName = event.Records[0].s3.object.key;
    var csv = await unzipS3(keyName, bucketName);
    var jsonData = await convertToJSON(csv);
    console.log(csv);
    console.log(jsonData);
    var dbconn = await new sql.connect(config);
    dbconn.connect().then(function () {
        console.log('Connection successfull');
        dbconn.close();
    });
};
我在网上做了一些研究,除了要使用的
mssql
模块外,还参考了一些文档,但这似乎只适用于Windows机器(我在mac上)。我尝试将用户名设置为变量并格式化该变量,使其只有一个反斜杠,并在“用户”字段中使用该反斜杠,但在AWS的CW日志中,它仍然显示双反斜杠“\\”


连接到SQL Server时是否有问题?

这是否回答了您的问题?谢谢@O.Jones的参考,我在研究中确实看到了这个链接,但它再次引用了msnodesqlv8模块,我无法从macbook中加载该模块。我想这只适用于Windows计算机。为什么不创建一个用户名和密码在mac中使用,而不是使用Windows身份验证?@ArunK-lambda将驻留在AWS中,并将在该环境中运行。我正在我的机器上进行开发,在那里我尝试安装npm模块(msnodesqlv8),但在模块无法安装的地方出现了错误。如果您使用的是无服务器框架,我建议使用
serverless offline
serverless localstack
之类的插件,因此,您可以使用类似于lambda的环境进行测试。因为如果你开始编写针对mac和linux的代码,你只会在lambda上运行时发现一些问题。或者,如果您使用的是
vscode
,也可以使用
vscode-remote
扩展来连接到linux环境并工作。我就是这么做的。祝你好运