Meteor JS - 嵌套函数返回值不正确

时间:2015-10-13 07:38:00

标签: javascript mysql meteor nested-function

我正在使用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数据。任何人都可以帮助我。

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

1 个答案:

答案 0 :(得分:0)

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

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