首页 > 解决方案 > 角度组请求mongodb

问题描述

$group我的后端有一个请求

const buildingsPerCampus = data.collection('buildings').aggregate(
  [{
    $group: {
      _id: "$idCampus",
      buildingName: {
        $push: "$buildingName"
      }
    }
  }]);

我可以用 Angular(我的前端)做什么来调用它?

我刚刚修改了我的请求,以对我的建筑物进行排序campusName

db.getCollection('buildings').aggregate([{
  $group: {
    _id: "$campusName",
    buildingName: {
      $push: {
        buildingName: "$buildingName",
        phoneNumber: "$phoneNumber"
      }
    }
  }
}]);

但我不知道我的角度服务中的语法来让这个数组把它放在一个表中。

这是我在前端获取建筑物的 http 请求,我需要对它们进行排序。

getBuildings() {
  return this.http.get(`${this.url}/buildings`);
}

我这样做了,但我不知道它是否正确:

app.get('/buildings', (req, res) => {
    db.db('').getCollection('buildings').aggregate([
        {$group : {_id: "$campusName", buildingName : {$push : {buildingName : "$buildingName", phoneNumber :"$phoneNumber" }}}}
      ]).toArray(function (err, building) {
        if (err) {
            res.send({ 'error': 'en error has occured'});
        } else {
            res.send(building);
        }
    });
});

这是我buildings使用角度的方法,我想要的是按campuses

https://i.stack.imgur.com/3nchz.png

以及我在 robo3T 中的聚合请求

https://i.stack.imgur.com/75IsM.png

你怎么看待这件事:

https://i.stack.imgur.com/2Vaoq.png

最后,我做到了。我刚刚用新的请求更改了我的获取请求,现在我只需要将它放在我的角度前面,你知道吗?我需要一个我不知道的选择器或表格。

https://i.stack.imgur.com/2hP2T.png

标签: node.jsangularmongodb

解决方案


假设您在此处公开了您的 API:https: //www.your-domain.com/buildings。您可以通过调用 HttpClient 的 get 方法来获取响应。

因此,您将首先创建一个将 HttpClient 作为依赖项注入的 Angular 服务。

然后,您将创建一个已在此处完成的方法:

getBuildings() {
  return this.http.get(`${this.url}/buildings`);
}

最后,您将能够从该方法中获取数据。

get方法返回一个您需要的 Obsrvablesubscribe来解包数据。

所以在你组件的 TypeScript 类中,一般在ngOnInit()方法中,调用你服务的getBuildings()方法并订阅它来获取实际数据。

这是它在代码中的样子:StackBlitz Project


推荐阅读