【问题标题】:Return data from mongoDB query in nodejs从nodejs中的mongoDB查询返回数据
【发布时间】:2019-12-15 07:59:52
【问题描述】:

我刚开始学习 MEAN 堆栈,但我被卡住了。我需要将以下查询数据发送到前端。

router.get('/average', (req, res) => {
  Employees.aggregate([
    { $match: { "position": "sen" } },
    {
      $group: {
        _id: null,
        average: {
          $avg: "$salary"
        }
      }
    }
  ]);
});

我尝试过这样做,但没有成功

router.get('/average', (req, res) => {
  Employees.find(function (err, docs) {
    res.json(docs);
  }).aggregate([
    { $match: { "position": "sen" } },
    {
      $group: {
        _id: null,
        average: {
          $avg: "$salary"
        }
      }
    }
  ]);
});

【问题讨论】:

  • mongodb 使用的是什么库?是猫鼬吗?
  • 是的,我正在使用猫鼬

标签: javascript node.js mongodb express


【解决方案1】:

在第一个示例中,您没有将数据发送到响应,而在第二个示例中,语法有些混乱。

所以 mongoose 返回一个 Promise 和/或 aggregate 值作为响应,所以下面的代码应该可以正常工作:

router.get('/average', (req, res) => {
  Employees.aggregate([
    { $match: { position: 'sen' } },
    {
      $group: {
        _id: null,
        average: {
          $avg: '$salary'
        }
      }
    }
  ])
  .then((result)=>{
    res.json(result)
  })
});

还可以查看 mongoose 的文档:https://mongoosejs.com/docs/api/model.html#model_Model.aggregate

【讨论】:

    猜你喜欢
    • 2019-08-22
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    相关资源
    最近更新 更多