国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

當(dāng)用戶登錄時(shí)返回特定于該用戶的總值
P粉470645222
P粉470645222 2024-03-22 12:45:30
0
1
872

正如標(biāo)題所示,我試圖在用戶登錄時(shí)從用戶那里獲取特定數(shù)據(jù)并聚合所有數(shù)據(jù),然后返回聚合數(shù)據(jù)。我嘗試使用 $match 函數(shù),但沒有運(yùn)氣。令人沮喪的是我能夠成功返回對象數(shù)組中的所有數(shù)據(jù)。更具體地說,下面的代碼成功運(yùn)行并返回一個(gè)對象數(shù)組:

const runs = await Run.find({ user: req.user.id })

但是此代碼沒有,它返回一個(gè)空數(shù)組:

const cumulativeTotals = await Run.aggregate([
    { $match: { user: req.user.id } },
    {
      $group: {
        _id: null,
        totalRunTime: { $sum: '$runTime' },
        avgRunTime: { $avg: '$runTime' },
        totalRunDistance: { $sum: '$runDistance' },
        avgRunDistance: { $avg: '$runDistance' },
        avgPace: { $avg: '$avgPace' },
        totalHeartRate: { $avg: '$avgHeartRate' },
        totalActiveCalories: { $sum: '$activeCalories' },
        averageActiveCalories: { $avg: '$activeCalories' },
        absoluteTotalCalories: { $sum: '$totalCalories' },
        avgTotalCalories: { $avg: '$totalCalories' },
      }
    }
  ])

我不確定為什么會出現(xiàn)這種情況。它應(yīng)該返回的是一個(gè)帶有對象的數(shù)組,該對象填充了其中的所有聚合數(shù)據(jù)。

我還知道,如果刪除 $match 它將成功聚合運(yùn)行集合中的所有數(shù)據(jù),所以我認(rèn)為這與此有關(guān)。

以下是所有相關(guān)代碼:

const getRuns = asyncHandler(async (req, res) => {
  const runs = await Run.find({ user: req.user.id })

  const cumulativeTotals = await Run.aggregate([
    { $match: { user: req.user.id } },
    {
      $group: {
        _id: null,
        totalRunTime: { $sum: '$runTime' },
        avgRunTime: { $avg: '$runTime' },
        totalRunDistance: { $sum: '$runDistance' },
        avgRunDistance: { $avg: '$runDistance' },
        avgPace: { $avg: '$avgPace' },
        totalHeartRate: { $avg: '$avgHeartRate' },
        totalActiveCalories: { $sum: '$activeCalories' },
        averageActiveCalories: { $avg: '$activeCalories' },
        absoluteTotalCalories: { $sum: '$totalCalories' },
        avgTotalCalories: { $avg: '$totalCalories' },
      }
    }
  ])


  if (!runs) {
    res.status(400).json({ message: 'No Runs Found for This User' })
    return
  }

  const response = {
    runs,
    cumulativeTotals
  }

  res.status(200).json(response)
})

P粉470645222
P粉470645222

全部回復(fù)(1)
P粉722409996

因此,在 rickhg12hs 的幫助下,我們能夠確定 {match: { user : req.user.id } } 是我試圖將字符串與 ObjectId 進(jìn)行比較,這是行不通的。這是因?yàn)槲以O(shè)置的 API 將用戶 ID 作為字符串返回,而不是作為 ObjectID。為了確保您比較的是正確的值類型(在本例中為 ObjectID),您可以這樣做:

{ $match: { user: new mongoose.Types.ObjectId(req.user.id) } }

它獲取返回的字符串并將其轉(zhuǎn)換為新的 ObjectID,并且因?yàn)樗F(xiàn)在正在比較 ObjectID,所以它可以工作。

顯然,它一直在文檔中,我只是沒有'看起來還不夠仔細(xì)

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板