流星JS - 嵌套函数返回值不正确
问题描述:
我使用Meteor.JS和pcel:mysql从该方法获取mysql结果并将其传递给帮助程序。流星JS - 嵌套函数返回值不正确
在我的方法中,该方法执行得很好,并使用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数据。谁能帮我吗。
我的事情我没有正确使用该变量是在嵌套函数。
答
看起来像connection.query是异步的,因此它没有时间执行,并立即返回默认的“returnresult”。 如果您在查询回调中移动return语句会怎么样?
connection.query('SELECT * FROM players', function(err, rows, fields) {
if (err) throw err;
console.log(rows);
return rows;
});
+0
我也试过这个,但它也不能工作,谢谢你的评论。 – Manu
裹此Meteor.call成Template.hello.onCreated功能 – Sindis
我曾尝试这样的: \t \t Template.hello.onCreated(函数(){.......}); 但结果是一样的。 我认为这是我们的变量没有在嵌套函数中得到更新的东西。 – Manu