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
возвращает неправильный подсчет для моего курсора. Как подсчитать мой курсор в этом случае?
Критически важно, чтобы были опубликованы только документы, удовлетворяющие критериям max/min/mainPrice? Если нет, кажется, было бы проще просто опубликовать все подходящие продукты, а затем использовать трансформирование/помощники на клиенте, чтобы определить, какие из них вам нужны (в качестве бонуса это также дает вам реактивность). –
@DavidWeldon спасибо за идею. У меня около 3 тыс. Продуктов в коллекции. Будет ли хорошо публиковать все это? – Deadly
Вероятно, нет - это ограничение, в котором, вероятно, пострадает ваш пользовательский опыт. Я предположил, что 'filter' уменьшит набор до меньшего начального размера - разве это не так? –