所以,我是 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 结束才能响应客户端。
有人可以帮忙吗?
最佳答案
您没有调用异步函数。这只是声明了一个函数,但并不执行。 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');
输出只是c
。
关于javascript - 在nodejs中使用mssql(插入行的函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50217939/