2015-04-15 1 views
3

я публикую результат поиска, и я ограничения результатов до 500:В Meteor, при публикации результата поиска с лимитом, почему «.count» в результате показывает больше предела?

Meteor.publish("myPublish", function (status) { 
    var foundOnServer = MyCollection.find({"status": status}, {limit: 500, sort: {"someField": 1}}); 
    console.log("returning " + foundOnServer.count() + " documents from server"); 
    return foundOnServer; 

    }); 

Но когда запрос приведет к более чем 500 документов, то console.log показывает фактическое число (более 500), но на клиенте я получаю только 500 документов. Таким образом, кажется, что он правильно ограничен, но я не понимаю, почему консоль сообщит о фактическом количестве документов, игнорируя ограничение.

+2

Это была известная проблема на некоторое время: см. Https://github.com/meteor/meteor/issues/1201 – Curtis

+0

Спасибо @Curtis, поэтому в соответствии с этим комментарием https://github.com/meteor/meteor/ issue/1503 # issue-21043438 Я предполагаю, что вместо этого я должен использовать .fetch(). length Кажется странным хранить результаты «find» в переменной, а затем подсчитывать количество вещей в этой переменной и видеть больше, чем вы ограничили свой результат, чтобы ... о хорошо :) – Wes

+1

Да, это кажется рекомендуемым обходным решением. Надеюсь, в скором времени будет исправлено. – Curtis

ответ

1

Благодаря @Curtis это известная проблема: https://github.com/meteor/meteor/issues/1503

Итак, если вы хотите, чтобы «доказать» себе, с console.log, что вы получили количество записей, вы просили, вы должны вместо делать:

console.log("returning " + foundOnServer.fetch().length + " documents from server"); 

, но это также может быть интересно регистрировать результат .Count, а также, как это будет показано, когда запрос получает больше, чем предел.

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