遇到的问题在上一篇博客中就说明了,下面这段代码只是为以后做个笔记
exports.monthcount = (req, res) => {
let result = {status: 0, message: '登录成功'}
// 月份
let monthArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
// 每月有多少天
let dayArray = []
let date = new Date()
// 年份
let year = date.getFullYear()
// 按月分组的数据
let array = []
// 每月各个平台的数据
let array1 = {}
// 计算每月有多少天
for (let i = 0; i < monthArray.length; i++) {
date.setMonth(monthArray[i])
date.setDate(0)
dayArray.push(date.getDate())
}
// 使用async模块进行数据库的同步操作
async.each(monthArray, function (item, calback) {
// 按月查询数据库
Source.find({
date: {
$gte: new Date(year + '-' + item + '-' + 1),
$lte: new Date(year + '-' + item + '-' + dayArray[(item - 1)])
}
}, (err, data) => {
if (err) throw err
let month = item
// 按月查询的结果赋值给monthData
let monthData = data
// 获取平台列表
Seting.find({}, (err, data) => {
if (err) throw err
if (data) {
let terraceList = data[0].terraceList
let terraceCount = []
// 循环查询平台列表中的所有平台所占的数据
async.each(terraceList, function (item, callback) {
Source.count({
terrace: item,
date: {
$gte: new Date(year + '-' + month + '-' + 1),
$lte: new Date(year + '-' + month + '-' + dayArray[(month - 1)])
}
}, (err, data) => {
if (err) throw err
let obj = {}
obj[item] = data
terraceCount.push(obj)
callback()
})
}, function (err) {
// 接收查询结果
array1['month' + month] = terraceCount
array[(item - 1)] = monthData
calback()
if (err) throw err
})
}
})
})
}, function (err) {
if (err) throw err
// 接收查询结果并返回给客户端
result.data = array
result.data1 = array1
res.json(result)
})
}