【问题标题】:Meteor JS - Nested Functions Returning Value not coming correctlyMeteor JS - 嵌套函数返回值不正确
【发布时间】:2015-10-13 07:38:00
【问题描述】:

我正在使用 Meteor.JS 和 pcel:mysql 从方法中获取 mysql 结果并将其传递给帮助程序。

在我的方法中,该方法执行得很好,并且使用 connection.query 我能够在服务器端控制台中记录 mysql 行。

这是我的代码的样子:

    if (Meteor.isClient) {

      Meteor.call('mysqltestcall1', function(error, result){
        Session.set('myMethodResult', result);
      });

      Template.hello.helpers({
        data2: function(){
          return Session.get('myMethodResult');
        }
      });

    }

    if (Meteor.isServer) {


    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'root',
      password : '',
      database : 'leaderboard'
    });

    connection.connect();


    Meteor.methods({
    'mysqltestcall1': function(){
    var returnresult = 'test value';
    connection.query('SELECT * FROM players', function(err, rows, fields) {
        if (err) throw err;
        console.log(rows);
        returnresult = rows;
    });

    return returnresult;
    }

    });


    }

我得到的值是“测试值”,而不是行 JSON 数据。谁能帮帮我。

我没有正确使用变量是在嵌套函数中。

【问题讨论】:

  • 将此 Meteor.call 包装到 Template.hello.onCreated 函数中
  • 我试过这个: Template.hello.onCreated(function(){ ..});但结果是一样的。我认为这是我们的变量没有在嵌套函数中更新的东西。

标签: javascript mysql meteor nested-function


【解决方案1】:

看起来 connection.query 是异步的,因此它没有时间执行并且立即返回默认的“returnresult”。 如果在查询回调中移动return语句怎么办?

connection.query('SELECT * FROM players', function(err, rows, fields) {
    if (err) throw err;
    console.log(rows);
    return rows;
});

【讨论】:

  • 我也试过了,但是还是不行,谢谢你的评论。
猜你喜欢
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-15
  • 2016-03-29
  • 1970-01-01
相关资源
最近更新 更多