2013-04-07 3 views
0

Мне нужно запустить запрос, который возвращает общее количество документов вместе с документами и может быть ограниченным и смещенным. Это похоже на вопрос this и this. Разница в том, что я запускаю map/reduce, и общее количество уже доступно в аргументе stats, поэтому, надеюсь, мне не нужно дважды вызывать запрос.Предел Mongoose и общее количество в mapReduce

list: function (options, cb) { 
    ... 
    this.mapReduce(o, function (err, model, stats) { 
     console.log('# of documents: %d ', stats.counts.output); 
     model.find() 
      .limit(criteria.perPage) 
      .skip(criteria.perPage * criteria.page) 
      .exec(cb); 
    }); 
}); 

Я называю list функцию от контроллера, как это:

Track.list(options, function (err, docs) { 
    res.json(docs); 
}); 

ли это как-то можно передать stats.counts.output в контроллер вместе с возвращенных документов?

+0

Спасибо за ссылки на 'stats.counts.output'. Я искал, как делать '.count()' и '.find()' в одном запросе и, по крайней мере, при использовании 'mapReduce', это кажется возможным. – hvrauhal

ответ

0

Вы можете обернуть cb внутри функции в аргументе exec:

model.find() 
    .limit(criteria.perPage) 
    .skip(criteria.perPage * criteria.page) 
    .exec(function (err, docs) { 
     cb(err, docs, stats.counts.output) 
    }); 

Track.list(options, function (err, docs, count) { 
    res.json({docs: docs, count: count}) 
}) 
Смежные вопросы