2014-11-17 2 views
1

У меня проблема с реализацией моего метеор js. Приложение имеет одну коллекцию под названием «задачи». У меня в разных местах моего приложения много разных фильтров в этой коллекции. Во многих случаях я загружаю разные списки с разными поисковыми запросами на одном экране, используя ту же коллекцию задач.Несколько публикаций и подписки

Я хотел использовать модель публикации-подписки. Я не уверен, ошибочно ли ошибаюсь, но так ли это, что я не могу иметь несколько публикаций и подписки на одну и ту же коллекцию манго? Конкретно я использую

Tasks= new Meteor.Collection("tasks"); 
//server 
Meteor.publish('Tasks1',function(evalstring){return eval(evalstring);}) 

Meteor.publish('Tasks1',function(evalstring){return eval(evalstring);}) 
//client 
evalstring="Tasks.find({enabled:false}).fetch()"; 
Meteor.subscribe('Tasks1',evalstring); 

бы что-то вроде этой работы? Если да, мы действительно зарабатываем что-то в производительности по сравнению с другим способом, не использующим публикации, и напрямую выполняем запросы на поиск? Спасибо

+0

Вы публикуете одно и то же, если изменить только значение, которое можно использовать Sessions, паб/саб реактивная как хорошо – Sindis

+0

'Meteor.publish ('Tasks1', функция (evalstring) {возвращение Eval (evalstring);}) '- никогда не делай этого, это ужасно для безопасности. – user3374348

+0

Я согласен с тем, что eval не является безопасным, но в нашем приложении все пользователи могут получить доступ ко всем данным. Не нужно скрывать конкретные документы коллекций, так как каждый должен уметь все видеть. – user1855793

ответ

1

Вы можете публиковать подписку несколько раз по той же коллекции. Дело только в том, что оно входит в одну коллекцию на стороне клиента, поэтому вам нужно также запрашивать клиентскую сторону.

Этот ответ stackoverflow имеет хорошее обсуждение по публикации и подписке.

Understanding Meteor Publish/Subscribe

+0

, поэтому, если я снова сделаю 2 публикации и подписки одной коллекцией, все возвращаемые элементы прийти в коллекцию на стороне клиента? Итак, в чем смысл использования публикаций в этом случае, а не просто. – user1855793

+0

управляет тем, что отправляется с сервера клиенту. Вы все еще не хотите, чтобы все получилось. –

+0

обновил мой ответ ссылкой на другой ответ с кучей информации, которую вы можете найти полезной –