.forEach内部的Meteor方法无法获得返回

时间:2013-12-12 18:13:02

标签: javascript asynchronous meteor

我有一个简单的测试,我在服务器端有一个Meteor方法,它基本上是一个包含一个集合的变量,让我们说:

Meteor.methods({
usernames: function() {
 var test_users = Meteor.users.find();
 test_users.forEach(function (user) {
   console.log(user.username);
   return 'test output';
 });
}
})

如果我尝试在Meteor调用的客户端调用它,我不能得到'测试输出'但是console.log会工作,我希望得到第一个'测试输出'..这是一个异步问题吗?

如果我在.forEach循环之后返回'something',它将返回..

1 个答案:

答案 0 :(得分:2)

return 'test output';从您传递给forEach的匿名函数返回,而不是用户名函数。

假设您想要获取用户名列表,您可能希望使用cursor.map这样:

Meteor.methods({
  usernames: function() {
    var test_users = Meteor.users.find();
    return test_users.map(function (user) {
      console.log(user.username);
      return user.username;
    });
  }
});