我如何实现一种方法,returns 集合和记录计数
How can I implement a method, that returns collection & records count
我用 sails.js 构建休息 api。
我想在我的 angularjs 前端实现分页。
为此,我应该获得符合条件的项目列表以及项目总数(以计算页数)。
很遗憾sails.jsreturns只有数据列表,没有总记录数。
我希望服务器响应如下所示:
{
data: [...], // collection data
count: 193 // records count, that meet the criteria of the request.
}
我该如何实现?
您可以使用Model.count
来count所有符合条件的数据。
示例:
// very important here to use the same `criteria` for `find` and `count`
var criteria = {foo: 'bar'};
Model.find(criteria).exec(function (err, found) {
Model.count(criteria).exec(function (error, count) {
console.log({ data: found, count: count });
});
});
你可以使用async.auto
async.auto(
count: functuon(callback){
Model.count(...).exec(callback);
},
data: function(callback){
Model.find(...).exec(callback);
}
},function(err,results){
console.log(results.count);
console.log(results.data);
});
我实现了一组蓝图,这些蓝图将 return 在以太中计数 header 或 body
https://github.com/randallmeeker/SailsBluePrintActions/tree/master/pagination
这里有一个例子
var query = Model.find()
.where( actionUtil.parseCriteria(req) )
.limit( actionUtil.parseLimit(req) )
.skip( actionUtil.parseSkip(req) )
.sort( actionUtil.parseSort(req) );
var metaInfo,
criteria = actionUtil.parseCriteria(req),
skip = actionUtil.parseSkip(req),
limit = actionUtil.parseLimit(req);
Model.count(criteria)
.exec(function(err, total){
if (err) return res.serverError(err);
metaInfo = {
start : skip,
end : skip + limit,
limit : limit,
total : total,
criteria: criteria
};
res.ok({info: metaInfo, items: matchingRecords});
});
我用 sails.js 构建休息 api。 我想在我的 angularjs 前端实现分页。 为此,我应该获得符合条件的项目列表以及项目总数(以计算页数)。
很遗憾sails.jsreturns只有数据列表,没有总记录数。
我希望服务器响应如下所示:
{
data: [...], // collection data
count: 193 // records count, that meet the criteria of the request.
}
我该如何实现?
您可以使用Model.count
来count所有符合条件的数据。
示例:
// very important here to use the same `criteria` for `find` and `count`
var criteria = {foo: 'bar'};
Model.find(criteria).exec(function (err, found) {
Model.count(criteria).exec(function (error, count) {
console.log({ data: found, count: count });
});
});
你可以使用async.auto
async.auto(
count: functuon(callback){
Model.count(...).exec(callback);
},
data: function(callback){
Model.find(...).exec(callback);
}
},function(err,results){
console.log(results.count);
console.log(results.data);
});
我实现了一组蓝图,这些蓝图将 return 在以太中计数 header 或 body
https://github.com/randallmeeker/SailsBluePrintActions/tree/master/pagination
这里有一个例子
var query = Model.find()
.where( actionUtil.parseCriteria(req) )
.limit( actionUtil.parseLimit(req) )
.skip( actionUtil.parseSkip(req) )
.sort( actionUtil.parseSort(req) );
var metaInfo,
criteria = actionUtil.parseCriteria(req),
skip = actionUtil.parseSkip(req),
limit = actionUtil.parseLimit(req);
Model.count(criteria)
.exec(function(err, total){
if (err) return res.serverError(err);
metaInfo = {
start : skip,
end : skip + limit,
limit : limit,
total : total,
criteria: criteria
};
res.ok({info: metaInfo, items: matchingRecords});
});