我正在使用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数据。任何人都可以帮助我。
我没有正确使用变量是在嵌套函数中。
答案 0 :(得分:0)
看起来connection.query是异步的,因此它没有时间执行,并且立即返回默认的“returnresult”。 如果在查询回调中移动return语句会怎么样?
connection.query('SELECT * FROM players', function(err, rows, fields) {
if (err) throw err;
console.log(rows);
return rows;
});