所以,我是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结束才能响应客户端。
有人可以帮忙吗?
答案 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
。