【发布时间】:2019-06-11 02:52:52
【问题描述】:
我是学习 Node.js 的新手,所以我仍然习惯于异步编程、回调和 Promise。我试图从一个记录集中的多个 MSSQL 查询返回数据,但我发现的大多数帮助文章都是关于 MySQL 的。
我尝试按照此处接受的答案中显示的步骤操作:Synchronous database queries with Node.js
在我的 SQL 函数中,当我打印到控制台时,它会正确显示对象。当我将它返回到我的快速路由器并尝试打印它说它是未定义的值时。
这是我的 MSSQL 函数:
var config = require('../../db/config');
async function getJobData(jobID) {
const sql = require('mssql');
let sqlResult = {};
var lock = 2;
var finishRequest = function() {
// This prints the values properly
console.log(sqlResult['jobData']['recordset']);
console.log(sqlResult['jobText']['recordset']);
return sqlResult;
}
// first query
try {
await sql.connect(config)
let result = await sql.query(`SELECT * FROM Jobs WHERE JobID = ${jobID}`);
lock -= 1;
sqlResult['jobData'] = result;
sql.close();
if (lock === 0) {
finishRequest();
}
} catch (err) {
// ... error checks
console.log(err);
}
// second query
try {
await sql.connect(config)
let result = await sql.query(`SELECT * FROM JDSectionTxt WHERE JobID = ${jobID} ORDER BY TypeID, OrderID`);
lock -= 1;
sqlResult['jobText'] = result;
sql.close();
if (lock === 0) {
finishRequest();
}
} catch (err) {
// ... error checks
console.log(err);
}
}
module.exports = getJobData;
这是我的快速路由器:
const express = require('express');
//....
const app = express();
//....
// Job Descriptions - Edit
app.get('/jds/edit', (req, res) => {
const getJobData = require("../models/jds/getJobData");
let jobID = 0;
if(req.query.jobID){
jobID = parseInt(req.query.jobID);
}
let jobData = getJobData(jobID);
jobData.then(result => {
//This just prints 'undefined'
console.log(result);
res.render('jds/edit', {
data: result
});
}).catch(err => {
console.log(err);
});
})
我需要在此处进行哪些更改才能正确地从我的 SQL 查询中传递对象,以便结果不是未定义的?
【问题讨论】:
标签: javascript node.js