angular - 如何使用属性读取MongoDB中的另一个集合?
问题描述
在我的 MEAN 堆栈应用程序中,我能够显示Event
来自 mongoDb 的对象。
下面是该对象的示例:
{
"_id" : ObjectId("5d415feedb87bc4470c560be"),
"event_name" : "test event",
"event_venue" : "5d40590dd4ea332774e940cb",
"event_artist" : "5d406855171c152868ba71c8",
"event_price" : "10",
"__v" : 0
}
这是检索上述数据的 Typescript:
ngOnInit() {
getEvent(): void {
this.route.params.subscribe(params => {
this.eventService.getEvent(params['id']).subscribe(res => {
this.event = res;
});
});
}
}
这是getEvent()
我的 EventService 中的方法:
getEvent(id) {
return this
.http
.get(`${this.uri}/get/${id}`);
}
以下是当前的 HTML:
<div>
Event Name: {{event.event_name}}
Venue: {{event.event_venue}}
Artist:{{event.event_artist}}
Price: {{event.event_price}}
</div>
上面的值event_venue
&event_artist
是venue
&artist
对象的 ID。
例如,这是我的venue
对象:
{
"_id" : ObjectId("5d40590dd4ea332774e940cb"),
"venue_name" : "diceys",
"venue_location" : "camden street",
"__v" : 0
}
的_id是event_venue in 。venue
_event
而不仅仅是显示event.event_venue
,有人可以告诉我如何使用它来检索venue.venue_name
吗?
解决方案
而不是在你的前端做一些事情,你应该在 mongodb 中使用聚合来改变你的查询并获得完整的细节。
例如:
db.event.aggregate([
{
$lookup: {
from: 'venue',
localField: 'event_venue',
foreignField: '_id',
as: 'venue'
}
},
{
$unwind: "$venue"
},
{
$project: {
_id: true,
event_name: true,
event_venue: "$venue.venue_name",
event_artist: true,
event_price: true
}
}
])
笔记:
event_venue
并且event_artist
必须类型ObjectId
不是字符串才能正确匹配。我不看,
artist
因为您没有提供其详细信息,如果您想修改添加以下代码以获得与场地相同的正确艺术家详细信息。
{
$lookup: {
from: 'artist',
localField: 'event_artist',
foreignField: '_id',
as: 'artist'
}
},
{
$unwind: "$artist"
},
{
event_artist:"$artist.name",
}
回复
{
"_id" : ObjectId("5d415feedb87bc4470c560be"),
"event_name" : "test event",
"event_artist" : ObjectId("5d406855171c152868ba71c8"),
"event_price" : "10",
"event_venue" : "diceys"
}
角
<div>
Event Name: {{event.event_name}}
Venue: {{event.event_venue}}
Artist:{{event.event_artist}}
Price: {{event.event_price}}
</div>
推荐阅读
- c# - 在 Razor 网页上显示静态 .png 图像
- tensorflow - Tensorflow-gpu 中的 GPU Sink 失败
- angular - 无法使用 Angular CLI 版本 9.1.3(和节点版本 12.16.2)创建新的 Angular 应用程序
- mongodb - Mongodb根据嵌套对象键找到最大值
- python - 将变量从 python 传递到 vba
- ios - 如何从从 html 转换的属性文本中删除不必要的符号?
- javascript - UseEffect 中的 UseRef 问题
- ios - 我无法使用已注册的电子邮件登录 firebase。如何修复错误
- javascript - 按日期时间对嵌套对象进行排序未按预期工作
- aws-step-functions - AWS Step Function 将整个输入作为有效负载传递给 lambda java