当前位置: 首页 > 面试题库 >

在node.js中调用函数时,为什么会得到一个空对象?

吴才俊
2023-03-14
问题内容

app.get我的node.jsExpress Server中有这个。

  app.get('/api/court/:num', function(req, res, next) {
    var courts = new CourtsHandler;
    if (req.params.num == 0) //get array of all courts
      return res.send(200, courts.courtsAmount());          
  });

调用此函数:

  this.courtsAmount = function(){
  connection.query('SELECT COUNT(*) AS result from courts', function(err, rows, fields){
      if (err) throw err;
      connection.end();
      console.log(rows[0].result);
      return rows[0].result;
      });
    };

正在调用courtsAmount函数。但是,在我的客户看来,我没有得到重用。相反,我只是得到一个空对象。

我认为这与我.query有一个回调有关,因此res.sendcourtsAmount实际触发之前发送了一个空对象。

我该如何解决这个问题?


问题答案:

您的courtsAmount不返回任何内容。相反,您应该在其中使用回调(或Promise)来执行以下操作:

this.courtsAmount = function(callback){
connection.query('SELECT COUNT(*) AS result from courts', function(err, rows, fields){
    if (err) throw err;
    connection.end();
    console.log(rows[0].result);
    callback(rows[0].result);
    });
  };

app.get('/api/court/:num', function(req, res, next) {
 var courts = new CourtsHandler;
 if (req.params.num == 0) //get array of all courts
   courts.courtsAmount(function(result) { res.send(200, result) });
});


 类似资料:
  • 我正在开发一个包含上传文件的任务,在这个上下文中,我发现在某些情况下调用

  • 我正在学习React,并且在我的项目中安装了ESLint。它开始给我一些错误,比如: 在setState中引用之前的状态react/no access状态时,在setState中使用回调 在我的React组件中,我有一个构造函数: 在我的职能中,我有: 我理解在中使用是不正确的,但我如何解决此错误?

  • 首先,我收到来自post string属性和来自控制器的inputStream。 接下来,我的服务调用ParseGeojosnStream以流式传输文件的内容。 接下来,传递特性的名称和列表,并将其插入表中。 最后,使用字符串属性和表名作为id创建scheme。 那么,当强制转换为json并将其存储在数据库中时,为什么要返回一个空的属性对象呢? 代码如下: log.info(“jsonGeomet

  • 问题内容: 为什么可以用经node.js测试的JavaScript调用此函数: 为什么最后一次呼叫“” 有效?是node.js中的错误,V8引擎中的错误,正式未定义的行为还是对所有解释程序实际上有效的JavaScript? 问题答案: 似乎是Node REPL错误,将这两行放在会导致语法错误。 错误: 问题已提交#6634。 转载于v0.10.20。 v0.11.7已修复此问题。

  • 当我在输入元素中输入第一个字符时,我得到“空字符串”。 在我看来,我在输入元素中输入一个字符,触发“onChange”事件,运行函数getTitle,设置“title”变量,该变量连接到useState钩子,然后控制结果。按照这个推理,我希望输入第一个字符。相反,我得到的是“空字符串”。从第二个字符开始,控制台打印字符。 对于“onInput”,函数也会发生同样的情况。 如何解决这个问题,为什么会