2015-08-31 1 views
0

Мне нужно добавить min и max поля в элементы коллекции в функции публикации и фильтровать элементы по этим файлам. Я нашел решение, используя forEach для курсора:Метеор курсора подсчитывает и forEach

Meteor.publish 'productsWithMinMax', (filter, options) -> 
    Products.find(filter, options).forEach (p) => 
     p.min = Math.min p.price1, p.price2, p.price3, p.price4 
     p.max = Math.max p.price1, p.price2, p.price3, p.price4 

     if p.min && p.max && (p.max < p.mainPrice || p.min > p.mainPrice) 
      @added "products", p._id, p 

    Counts.publish @, 'numberOfProductsWithMinMax', Products.find(filter), {noReady: true} 

    @ready() 

Но теперь Counts.publish возвращает неправильный подсчет для моего курсора. Как подсчитать мой курсор в этом случае?

+1

Критически важно, чтобы были опубликованы только документы, удовлетворяющие критериям max/min/mainPrice? Если нет, кажется, было бы проще просто опубликовать все подходящие продукты, а затем использовать трансформирование/помощники на клиенте, чтобы определить, какие из них вам нужны (в качестве бонуса это также дает вам реактивность). –

+0

@DavidWeldon спасибо за идею. У меня около 3 тыс. Продуктов в коллекции. Будет ли хорошо публиковать все это? – Deadly

+0

Вероятно, нет - это ограничение, в котором, вероятно, пострадает ваш пользовательский опыт. Я предположил, что 'filter' уменьшит набор до меньшего начального размера - разве это не так? –

ответ

0

Единственное, что я нашел, это добавить свойства max/min в коллекционную модель.

P.S. Это будет хорошо, если кто-то предложит лучшую.

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

  • Нет связанных вопросов^_^