gpt4 book ai didi

node.js - 获取总数以及 Mongoose 查询跳过和限制

转载 作者:IT老高 更新时间:2023-10-28 13:24:25 37 4
gpt4 key购买 nike

我有一个包含许多对象的 json 数据。我想限制分页数据,我需要总项目数。请帮忙。

Model.find().skip((pageNumber-1)*limit).limit(limit).exec()

我想要计数和跳过的数据作为响应。

最佳答案

您可以使用异步库一次运行 2 个查询。在您的情况下,您可以运行一个查询来获取文档的数量,另一个用于分页。

“用户”模型示例:

    var async = require('async');
var User = require('./models/user');

var countQuery = function(callback){
User.count({}, function(err, count){
if(err){ callback(err, null) }
else{
callback(null, count);
}
}
};

var retrieveQuery = function(callback){
User.find({}).skip((page-1)*PAGE_LIMIT)
.limit(PAGE_LIMIT)
.exec(function(err, doc){
if(err){ callback(err, null) }
else{
callback(null, doc);
}
}
};

async.parallel([countQuery, retrieveQuery], function(err, results){
//err contains the array of error of all the functions
//results contains an array of all the results
//results[0] will contain value of doc.length from countQuery function
//results[1] will contain doc of retrieveQuery function
//You can send the results as

res.json({users: results[1], pageLimit: PAGE_LIMIT, page: page, totalCount: results[0]});

});

async 允许您根据所使用的硬件并行运行多个查询。这比使用 2 个独立查询来获取计数和获取所需文档要快。希望这会有所帮助。

关于node.js - 获取总数以及 Mongoose 查询跳过和限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34945521/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com