2015-01-21 3 views
1

Я использую Meteor 1.0 Это, вероятно, обычная ошибка начинающих, но я не могу найти решение.Meteor call не дает результатов

Когда я попрошу сервер вернуть коллекцию, результаты не отображаются. Тем не менее, консольный журнал показывает хорошие результаты. Вот помощник клиента:

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

    }, 
}); 

Может кто-то помочь мне с этим?

+0

И как выглядит ваш поискNearProjects? – Sindis

ответ

1

Прежде всего, ваш метод должен возвращать курсор, поэтому вы должны удалить .fetch(), который на самом деле пересекает курсор для возврата массива. Курсор поддерживается и поддерживается в Метеор.

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

Но для очень простого Монго запроса, как это, вы не должны использовать 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}); 
    } 
}); 

Или, если вы хотите опубликовать с некоторыми критериями найти, вы можете передать ваши аргументы ваших подписываются и опубликовывать функций.

+0

С благодарностью Serkan, но fields.push (поле) выдает сообщение об ошибке. – tjakko

+0

Мой метод сервера выглядит так: – tjakko

+0

searchNearProjects: function() { \t \t return Project.find ({}, {sort: {createdAt: -1}, limit: 10}). Fetch(); \t}, – tjakko

Смежные вопросы