繁体   English   中英

Node.js mssql 返回记录集

[英]Node.js mssql return recordset

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

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

这是我的 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 查询并将它的结果传递给我的视图。 这是我的路线代码:

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语法来“解压”,并得到sqlResult自许(你需要让你的回调方法async做到这一点),或简单地使用.then从你的承诺得到返回值(即: 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
      });
    });  
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM