javascript - meteor 调用没有给出结果

标签 javascript meteor

我正在使用 Meteor 1.0 这可能是初学者常见的错误,但我似乎找不到解决方案。

当我要求服务器返回集合时,没有显示结果。但是,我的控制台日志显示了良好的结果。 这是客户端助手:

Template.myProjectTips.helpers({
  matchingProjects: function() {
      Meteor.call('searchNearProjects', function(error, result) {
        if (error) {
            console.log(error.reason);
            return;
              } else {
              var fields = [{}];
              _.each(result, function(field) {
                  fields = field;
                  console.log('result: ' + fields.title);
              });
              return fields;
          }
      });

  },
});

有人可以帮我解决这个问题吗?

最佳答案

首先,您的方法应该返回一个游标,因此您应该删除 .fetch() ,它实际上会遍历游标以返回一个数组。 Meteor 原生支持和推广 Cursor。

Meteor.methods({
  searchNearProjects: function() {
    return Project.find({}, {sort: {createdAt: -1}, limit: 10});
  }
});

此外,在模板代码中,您正在替换数组,而不是应该填充它。但由于您使用的是实时光标,因此您也不需要所有 _.each() 遍历。因此您可以简单地执行以下操作:

Template.myProjectTips.helpers({
  matchingProjects: function() {
    Meteor.call('searchNearProjects', function(error, result) {
      if (error) {
        console.log(error.reason);
        return;
      } else {
        return result;
      }
    });
  }
});

但是对于像这样非常简单的 Mongo 查询,您不应该使用 Meteor.method

相反,您应该像这样发布和订阅:

服务器:

Meteor.publish("nearProjects", function () { return Project.find({}, {sort: {createdAt: -1}, limit: 10}); });

客户:

Meteor.subscribe("nearProjects");

Template.myProjectTips.helpers({
  matchingProjects: function() {
    return Project.find({}, {sort: {createdAt: -1}, limit: 10});
  }
});

或者,如果您想使用某些查找条件进行发布,您也可以将参数传递给订阅和发布函数。

关于javascript - meteor 调用没有给出结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28063710/

相关文章:

c# - 检查动态创建的文本框是否被 Javascript 弄脏

javascript - 将 JavaScript 回调传递给在另一个线程中调用它的 FFI 函数是否安全?

javascript - 为什么屏幕变暗并且我的 Bootstrap 模式没有出现?

javascript - C语言的DDP服务器

javascript - 通过 AJAX 加载文件一部分的最快方法?

javascript - jQueryUI : how to restrict droppable area to multiple divs?

html - <head> 中的 Meteor 模板引用

javascript - Meteor/Javascript - 这是不好的做法吗? - 声明变量

meteor - 如何解决 Google OAuth "redirect_uri_mismatch"错误?

node.js - 在 Meteor.js 上定义证书颁发机构