无法从从 sql 数据库读取的 javascript 函数中获取返回数组 [重复]

Posted

技术标签:

【中文标题】无法从从 sql 数据库读取的 javascript 函数中获取返回数组 [重复]【英文标题】:Cannot get return array from javascript function reading from sql database [duplicate] 【发布时间】:2016-07-17 08:30:19 【问题描述】:

我已通过代码进行调试以检查以确保我从 node.js 中的 sql 连接获取数据。但我无法让这个函数返回结果。当循环遍历行时,它会将项目添加到数组中,但我注释了值显示正确的行...为什么这个函数返回一个空白数组 []?

function execute_stp_getconfigurationsbyuserid(userid, callback)

    var results = [];
    var Connection = require('tedious').Connection;
    var config = 
    ;

    function item(id,name)
    
        this.id = id;
        this.name = name;

        return this;
    

    var Request = require('tedious').Request
    var TYPES = require('tedious').TYPES;

    var connection = new Connection(config);

    var myCallback = function(err,data)
        connection.on('connect', function(err) 

            var request = new Request("stp_GetConfigurationsByUserId @UserId", function(err) 
                if (err) 
                    console.log(err);
            );

            request.addParameter('UserId', TYPES.Int, userid);

            request.on('row', function(columns) 
                var itm = new item(columns[0].value, columns[2].value);
                results.push(itm);
                //HAS THE CORRECT VALUE HERE
                console.log(results);
            );

            request.on('done', function(rowCount, more) 
                console.log(rowCount + ' rows returned');
                myCallback(null,results);
            );

            connection.execSql(request);

        );
    


调用函数:

router.get('/getuserconfigurations', function(req, res, next) 
    var config_ddl = execute_stp_getconfigurationsbyuserid(1);
    console.log("Getting user configurations....")
    console.log(config_ddl);
    res.send(JSON.stringify(config_ddl));
);

【问题讨论】:

【参考方案1】:

节点异步工作。到执行返回结果时,上述语句不需要完成。尝试使用回调来传递/处理数据。 参考这个链接nodeJs callbacks simple example

编辑:代码可以修改为

var callback = function(err, data)
  console.log(data);


function execute_stp_getconfigurationsbyuserid(userid, callback)

    var results = [];
    var Connection = require('tedious').Connection;
    var config = 
    ;

    function item(id,name)
    
        this.id = id;
        this.name = name;

        return this;
    

    var Request = require('tedious').Request
    var TYPES = require('tedious').TYPES;

    var connection = new Connection(config);

 
  connection.on('connect', function(err) 

    var request = new Request("stp_GetConfigurationsByUserId @UserId", function(err) 
      if (err) 
        console.log(err);
    );

    request.addParameter('UserId', TYPES.Int, userid);

    request.on('row', function(columns) 
      var itm = new item(columns[0].value, columns[2].value);
      results.push(itm);
      //HAS THE CORRECT VALUE HERE
      console.log(results);
    );

    request.on('done', function(rowCount, more) 
      console.log(rowCount + ' rows returned');
      callback(null,results);
    );

    connection.execSql(request);

  );
   

【讨论】:

你能告诉我如何使用我拥有的东西吗? var myCallback = function(err, data) console.log(data); request.on('done', function(rowCount, more) console.log(rowCount + ' rows returned'); myCallback(null,results); );调用这个myCallback 还是不行。 您可以在修改完成后编辑问题吗?这样我就明白了。 是的,我可以。我已经更新了代码。如果您还没有意识到,我对这些东西很陌生。

以上是关于无法从从 sql 数据库读取的 javascript 函数中获取返回数组 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

STC单片机 SPI通讯,主机不能从从机读取正确的数

Javascript:从从 XML 文件导入数据切换到从 JS 对象数组导入数据

无法从从 Firebase 实时数据库中检索数据以在以下代码行中使用它的方法中获取返回值 [重复]

如何将 HTML 读取为 XML?

Oracle 启动SQL Developer提示无法从套接字读取更多的数据

javascrip cookie