javascript - Node.js mssql 返回记录集

标签 javascript node.js

我是 Node.js 的新手,所以我仍在习惯异步编程和回调。我正在尝试查询 MS SQL Server 数据库并返回记录集以在我的 View 中显示。

打印到 console.log 时,mssql 查询工作正常。我的问题是不知道如何正确返回数据。

这是我的 mssql 查询:

    var config = require('../../db/config');

async function getJobList(activeJD) {
    const sql = require('mssql')
    let sqlResult = '';
    try {
        await sql.connect(config)
        const result = await sql.query(`select top 10 [jobid], [title] from OrgJobs where ActiveJD = ${activeJD}`);

        console.log(result); // working correctly
        sqlResult = result;
    } catch (err) {
        // ... error checks
    }

    return sqlResult;
}

module.exports = getJobList;

使用express,我试图让我的路由调用这个sql查询并将其结果传递到我的 View 。这是我的路线代码:

const express = require('express');
//....
const app = express();
//....
app.get('/jds', (req, res) => {
    const getJobList = require("../models/jds/list");

    let jobList = getJobList(0);

    res.render('jds/index', {
        title: appName + ' | Job Descriptions',
        header: 'Active Job Descriptions',
        data: jobList
    });

})

来自 getJobList() 的记录集未返回到 jobList。我已经阅读过,我相信这是因为 getJobList 是异步的,并且在 getJobList 返回其值之前调用 jobList,对吧?如果是这样,我相信我需要添加一个回调,但我不确定如何将其实现到我已有的内容中。非常感谢任何建议!

最佳答案

async 方法将始终返回 Promise 。这意味着 jobList 是一个 Promise

let jobList = getJobList(0);

您可以使用 await 语法来“解包”并从 Promise 中获取 sqlResult (您需要将回调方法设置为 async) > 来执行此操作),或者简单地使用 .then 从您的 Promise 获取返回值(即:sqlResult):

app.get('/jds', (req, res) => {
    const getJobList = require("../models/jds/list");

    const jobList = getJobList(0); // jobList is a promise
    jobList.then(result => { // result is sqlResult
      res.render('jds/index', {
        title: appName + ' | Job Descriptions',
        header: 'Active Job Descriptions',
        data: result
      });
    });  
})

关于javascript - Node.js mssql 返回记录集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56285127/

相关文章:

javascript - 如何将 javascript 中的日期格式化为 DD-MMM-YYYY?

mysql - 序列化分组最大值

javascript - 如何在 Node.js 中正确构建类

javascript - 对 MongoDB 的多个 mongoose count() 查询

javascript - 谷歌地图 API 无法加载 map 图 block

Javascript 用正则表达式替换 - 只替换找到的字符串的一部分

javascript - 创建变量名函数

javascript - 使用 Electron 将 Angular 框架应用程序转换为桌面应用程序

javascript - 是否可以通过 javascript 通过读取 json 文件而不是使用参数来更新安全组?

javascript - 如何从异步调用返回响应?