Refactor userId handling in cigarettes and stats routes to use mongoose ObjectId for consistency; add debug logging for stats aggregation.
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
const { Router } = require('express')
|
const { Router } = require('express')
|
||||||
|
const mongoose = require('mongoose')
|
||||||
|
|
||||||
const { getAnswer } = require('../../utils/common')
|
const { getAnswer } = require('../../utils/common')
|
||||||
const { CigaretteModel } = require('./model/cigarette')
|
const { CigaretteModel } = require('./model/cigarette')
|
||||||
@@ -27,7 +28,7 @@ router.post('/', async (req, res, next) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const item = await CigaretteModel.create({
|
const item = await CigaretteModel.create({
|
||||||
userId: user.id,
|
userId: new mongoose.Types.ObjectId(user.id),
|
||||||
smokedAt: date,
|
smokedAt: date,
|
||||||
note,
|
note,
|
||||||
})
|
})
|
||||||
@@ -44,7 +45,7 @@ router.get('/', async (req, res, next) => {
|
|||||||
const user = req.user
|
const user = req.user
|
||||||
const { from, to } = req.query
|
const { from, to } = req.query
|
||||||
|
|
||||||
const filter = { userId: user.id }
|
const filter = { userId: new mongoose.Types.ObjectId(user.id) }
|
||||||
|
|
||||||
if (from || to) {
|
if (from || to) {
|
||||||
filter.smokedAt = {}
|
filter.smokedAt = {}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
const { Router } = require('express')
|
const { Router } = require('express')
|
||||||
|
const mongoose = require('mongoose')
|
||||||
|
|
||||||
const { getAnswer } = require('../../utils/common')
|
const { getAnswer } = require('../../utils/common')
|
||||||
const { CigaretteModel } = require('./model/cigarette')
|
const { CigaretteModel } = require('./model/cigarette')
|
||||||
@@ -23,19 +24,24 @@ router.get('/daily', async (req, res, next) => {
|
|||||||
const toDate = to ? new Date(to) : now
|
const toDate = to ? new Date(to) : now
|
||||||
|
|
||||||
const match = {
|
const match = {
|
||||||
userId: user.id,
|
userId: new mongoose.Types.ObjectId(user.id),
|
||||||
smokedAt: {
|
smokedAt: {
|
||||||
$gte: fromDate,
|
$gte: fromDate,
|
||||||
$lte: toDate,
|
$lte: toDate,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Отладка: проверяем, сколько записей попадает в фильтр
|
||||||
|
const totalCount = await CigaretteModel.countDocuments(match)
|
||||||
|
console.log('[STATS] Match filter:', JSON.stringify(match, null, 2))
|
||||||
|
console.log('[STATS] Total cigarettes in range:', totalCount)
|
||||||
|
|
||||||
const data = await CigaretteModel.aggregate([
|
const data = await CigaretteModel.aggregate([
|
||||||
{ $match: match },
|
{ $match: match },
|
||||||
{
|
{
|
||||||
$group: {
|
$group: {
|
||||||
_id: {
|
_id: {
|
||||||
$dateToString: { format: '%Y-%m-%d', date: '$smokedAt' },
|
$dateToString: { format: '%Y-%m-%d', date: '$smokedAt', timezone: 'UTC' },
|
||||||
},
|
},
|
||||||
count: { $sum: 1 },
|
count: { $sum: 1 },
|
||||||
},
|
},
|
||||||
@@ -43,6 +49,8 @@ router.get('/daily', async (req, res, next) => {
|
|||||||
{ $sort: { _id: 1 } },
|
{ $sort: { _id: 1 } },
|
||||||
])
|
])
|
||||||
|
|
||||||
|
console.log('[STATS] Aggregation result:', data)
|
||||||
|
|
||||||
const result = data.map((item) => ({
|
const result = data.map((item) => ({
|
||||||
date: item._id,
|
date: item._id,
|
||||||
count: item.count,
|
count: item.count,
|
||||||
|
|||||||
Reference in New Issue
Block a user