node.js - 角度组请求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
最后,我做到了。我刚刚用新的请求更改了我的获取请求,现在我只需要将它放在我的角度前面,你知道吗?我需要一个我不知道的选择器或表格。
解决方案
假设您在此处公开了您的 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
推荐阅读
- python - c#: 程序没有从 Socket.BeginReceive() 进入 AsyncCallback
- wso2 - 在 wso2 api 管理器中,Environment.jsx 文件中的 {endpoint.URLs.http} 填充了什么?
- asp.net-core - ASP.NET Core 3.1 中的可重用 HTML 位在编辑器中标记为红色
- asp-classic - ASP Classic:无法通过 Sendgrid API v3 发送 Base64 PDF 附件,只能发送 PDF 中的文件名
- c++ - 在类中使用模板参数中的类型名
- vue.js - Get selected dropdown value in vue.js
- r - 根据条件将插值行添加到 data.table
- python - 无法提取 locust 中的 cookie 值
- amazon-web-services - 拒绝将现有实例升级到某些 ec2 实例类型的 IAM 策略
- python - 脚本执行结束后,使诅咒输出在控制台中持续存在