在nodejs中使用mssql(插入行的函数)

时间:2018-05-07 15:43:27

标签: javascript sql-server node.js

所以,我是Nodejs的新手,现在我正在尝试根据我从客户端收到的动作进行插入。

我有一个功能模块,由路由调用以执行某些任务。每个动作都需要记录在一个mssql表中,所以我选择使用npm中的mssql。

https://www.npmjs.com/package/mssql

函数模块中的每个函数调用saveActionToDB函数,该函数接收动作和用户名,以便插入表中,如下所示:

function saveActionToDB(action, user){
    if (config.Logging.DB.type == 'mssql'){
        const dbOptions = {
            user: config.Logging.DB.user,
            password: config.Logging.DB.password,
            server: config.Logging.DB.server,
            database: config.Logging.DB.database,
            options: {
                encrypt: config.Logging.DB.encrypt
            }
        };
        const database = require('mssql');
        async () => {
            try{
                const pool = await database.connect(dbOptions);
                const result = await database.query(`insert into actions (action, user) values ("${action}", "${user}")`);
                console.log(pool);
            }
            catch (err){
                console.log(err);
                combinedLogger.error(err);
            }
        }
    }
    else if(config.Logging.DB.type == 'oracle'){
        //oracle
    }
}

应用程序需要能够使用mssql或oracle。那就是为什么它检查config.Logging.DB.type val来使用两者中的每一个。

现在,函数调用saveActionToDB,但它没有做任何事情。也没有错误。我猜这是异步的问题。

请注意,我不需要等待saveActionToDB结束才能响应客户端。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您没有调用异步功能。这只是声明一个函数但不执行。 async () => {

查看此示例

console.log('a');
x = async () => {
  console.log('b');
}

console.log('c');
x();

输出为a c b。但是,如果我这样做

console.log('a');
async () => {
  console.log('b');
}

console.log('c');

输出只是a c