【问题标题】:.forEach inside of a Meteor Method can't get returnMeteor 方法中的 .forEach 无法返回
【发布时间】:2013-12-13 03:31:20
【问题描述】:

我有一个简单的测试,我在服务器端有一个 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 循环之后返回“某事”,它将返回那个..

【问题讨论】:

  • 我不确定 Meteor 使用什么驱动程序,但通常我会认为 Meteor.users.find() 需要回调,...find(function(users){}
  • 您要返回什么?在 forEach 中返回不能那样工作......
  • 试试var useNames = test_users.map(function(user){return user.username;});

标签: javascript asynchronous meteor


【解决方案1】:

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;
    });
  }
});

【讨论】:

  • 啊,那是我缺少的部分,它是从匿名函数返回的,而不是用户名函数。再次感谢奥列格
  • @JasonIp:没问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-14
  • 2014-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多