【问题标题】:NodeJS Can't Access Variable Inside CallbackNodeJS无法访问回调内部的变量
【发布时间】:2026-02-04 07:00:01
【问题描述】:

我认为这是异步的问题,但我不知道解决方案。

    PagesController.buy = function() {

  var table="";
  Selling.find({}, function(err, res) {
    for (var i in res) {
      console.log(res[i].addr);
      table = table + "res[i].addr";
    }
  });
  this.table = table;
  console.log(table);
  this.render();
}

我的问题是 this.table=table 如果我尝试在函数之外访问它,它会返回 undefined,而且我无法弄清楚如何在页面上显示表格。

【问题讨论】:

  • 你是如何尝试在函数之外访问“this.table”的?
  • 抱歉,我的意思是在函数 (err, res) { } 内部设置了变量“table”,当我尝试将它分配给 this.table 时,变量“table”为空。

标签: node.js mongoose locomotivejs


【解决方案1】:

问题是 Selling.find 是异步的,并且在执行 this.table = 表时可能尚未完成。试试下面的方法。

PagesController.buy = function() {
  var that = this;
  Selling.find({}, function(err, res) {
    var table = '';
    for (var i in res) {
      console.log(res[i].addr);
      table = table + res[i].addr;
    }

    that.table = table;
    console.log(table);
    that.render();
  });
}

这将保证在获取结果并填充表格之前不会使用表格。

【讨论】: