使用node和mssql从数据库中检索值

时间:2019-05-07 18:58:12

标签: node.js sql-server

这是我编写的一个简单脚本:

const Nightmare = require('nightmare');
const sql = require('mssql');
const itens = getRecords();

async function getRecords(){
    let itensList = [];
    const cfg = {
      //config here
    };
    sql.connect(cfg, function(err){
        if(err) console.log(err);
        let request = new sql.Request();
        request.query("<query here>", (err, result) => {
            if(err) console.log(err);
            itensList = result;
        });
        return itensList;
    });
}

async function getPrices(){
    try{
        console.log(itens)
    }catch(e){
        console.log(e);
    }
}

getPrices();

一切正常,但是当调用getPrices()函数时,正在记录以下内容:

Promise { undefined }

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

request.query正在被调用,但是在返回itenslist之前,它只能被分配。

基本上,发生的顺序是:

  1. request.query被调用,并开始运行查询。
  2. 由于request.query是异步的,因此我们继续执行下一个任务-返回itenlist
  3. request.query完成运行,并在返回itenlist后为其分配期望值。

要获得所需的功能,我建议使用回调(node-mssql支持)。或者,您可以使用await关键字。例如:

var queryText = 'SELECT 1 AS Value';
var queryResults = await connection.query(queryText);