如何通过对象id访问其他属性值?

时间:2018-01-07 17:48:22

标签: javascript angularjs node.js mongodb mean-stack

我差不多完成了我的OneToMany CRUD MEAN应用程序的构建,但我遇到了一个问题。

我的数据库中有两个集合

游戏:

{ "_id" : 1, 
"name" : "Bethesda Softworks" }

和发布商:

<form>
    <div class="form-group">
     <label class="form-control">Title: {{ game.title }}</label>
     <label class="form-control">Developer: {{ game.developer}}</label>
     <label class="form-control">Publiser: {{ game.publisherId }}</label>
     <label class="form-control">Year: {{ game.year }}</label>
     <label class="form-control">Gerne: {{ game.gerne }}</label>
     <label class="form-control">ID: {{ game._id }}</label>
    <a href="#/games" class="btn btn-default"> Back</a>

在我的游戏详情html文件中我有这个:

from jinja2 import Template

有没有办法显示发布商名称而不是_id?

1 个答案:

答案 0 :(得分:1)

您可以使用$lookup聚合函数在games中使用publishers进行左外连接Mongoose集合,以获取嵌入了游戏文档的发布商文档(如果存在)。 / p>

您可以使用游戏中嵌入的发布商字段填充UI

出版商

> db.publishers.find({_id:1}).pretty()
{ "_id" : 1, "name" : "Bethesda Softworks" }

游戏

> db.games.find({_id:1}).pretty()
{
    "_id" : 1,
    "title" : "Prey",
    "developer" : "Arkane Studios",
    "publisherId" : 1,
    "year" : 2017,
    "gerne" : "Action"
}

$查找

> db.games.aggregate(
    [
        {
            $lookup:
                {
                    from : "publishers", 
                    localField:"publisherId", 
                    foreignField:"_id", 
                    as : "publisher"
                }
        }
    ]
).pretty()

输出

{
    "_id" : 1,
    "title" : "Prey",
    "developer" : "Arkane Studios",
    "publisherId" : 1,
    "year" : 2017,
    "gerne" : "Action",
    "publisher" : [
        {
            "_id" : 1,
            "name" : "Bethesda Softworks"
        }
    ]
}
>