1. 排序排名
华狮奖捐款个人、服务队、分区、管区排行榜
queryAll
_.chain(allDatas).map(合并个人数据).sortBy(按捐款数排序).map(计算排名).value()
2. 个人多次捐款,求和取数组
_.chain(allDatas).reduce().range().value()
router.get('/count', function (req, res, next) {
donationService.queryDonation({
weixinuserId: req.query.weixinuserId,
belongUser: ''
}).then(function (datas) {
// console.log(datas);
if (datas.length == 0) {
res.send(null);
} else {
res.send(_.range(_.reduce(datas, function (memo, num) {
return (typeof memo == 'number' ? memo : memo.get('count')) + num.get('count')
}, 0)));
}
}, next);
});
3. 多个表数据集合处理
_.chain([_.map(), _.map(), _.map()]).flatten().filter().uniq().sortBy().value()
/**
* 查询我的活动 我发布的、我报名的、我参加的
* @param params
*/
queryMyActivity: function (params) {
var userId = params.userId;
return AV.Promise.all([
queryActivity({createdBy: userId}),
activityEnrollService.queryActivityEnroll({userId: userId}),
activityParticipateService.queryUserParticipate({userId: userId}),
]).then(function (datas) {
var createdActivities = datas[0], enrollActivities = datas[1], participateActivities = datas[2];
return _.chain([
_.map(createdActivities, function (item) {
return {
activityId: item.id,
title: item.get('title'),
startTime: item.get('startTime'),
endTime: item.get('endTime'),
location: item.get('location'),
activityType: item.get('type'),
status: item.get('status')
};
}),
_.map(enrollActivities, function (item) {
if (item.get('activity')) {
return {
activityId: item.get('activity').id,
title: item.get('activity').get('title'),
startTime: item.get('activity').get('startTime'),
endTime: item.get('activity').get('endTime'),
location: item.get('activity').get('location'),
activityType: item.get('activity').get('type'),
status: item.get('activity').get('status')
};
}
}),
_.map(participateActivities, function (item) {
if (item.get('activity')) {
return {
activityId: item.get('activity').id,
title: item.get('activity').get('title'),
startTime: item.get('activity').get('startTime'),
endTime: item.get('activity').get('endTime'),
location: item.get('activity').get('location'),
activityType: item.get('activity').get('type'),
status: item.get('activity').get('status')
};
}
})
])
.flatten()
.filter(function (item) {
return item != null;
})
.uniq(false, function (value) {
return value.activityId;
})
.sortBy(function (item) {
return item ? -1 * item.startTime : 0;
})
.value();
});