激活的Route Angular不会从mongodb带来数据

时间:2019-12-30 03:33:29

标签: angular mongodb mongoose

我正在使用“激活的路线角度”来获取演员和他的电影,我有一个演员列表,每个演员都有一个“激活的路线”链接到他的电影的细节。

我正在使用我的服务

getActor(_id:String): Observable<Actorpelicula>{
    const url = `${this.URL_ACT}/${_id}`;

    return this.http.get<Actorpelicula>(url)
}

在组件中

getActor():void{
    const _id = this.rutas.snapshot.paramMap.get('_id');
    this.peliculaService.getActor(_id)
        .subscribe(actor => this.actor = actor);
}

在我的控制器上,我使用的查询有效,但是并不能为我带来查询中需要的所有细节

peliculaCtrl.getActor = async(req, res) =>{
    const actor = await Actores.findOne({_id: req.params.id})
    res.json(actor);
}

我返回的文件结构如下:

{
  "_id": "5dc0365e0b2c0c479cb3fba3",
  "name": "Keanu Reeves",
  "description": "es un actor y músico canadiense-estadounidense, nacido en el Líbano. Dedicado a la actuación, tiene entre su repertorio las comedias de la franquicia de Bill y Ted (1989–1991); los thrillers de acción Point Break (1991), Speed (1994) y la franquicia John Wick (2014–2019); el thriller psicológico The Devil's Advocate (1997); el thriller sobrenatural Constantine (2005); y la serie de ciencia ficción y acción The Matrix (1999-2003). También ha participado en películas dramáticas como Dangerous Liaisons (1988), My Own Private Idaho (1991) y Little Buddha (1993), así como en la película de terror y romance Bram Stoker's Dracula (1992).",
  "height": "1.86",
  "birth": "1964-09-02T05:00:00.000Z",
  "years": 55,
  "image": "https://res.cloudinary.com/tq/image/upload/v1572888170/cineencasa/actores/bOlYWhVuOiU6azC4Bw6zlXZ5QTC.jpg",
  "__v": 0
}

此新查询包含我需要的必要详细信息

peliculaCtrl.peliculasActor = async(req,res) =>{

const ObjectId = mongoose.Types.ObjectId;

const peliculaActor = await Actores.aggregate([
    {
      $match: {
        _id: ObjectId(req.params.id)
      }
    },
    {
      $lookup:
        {
          from: "peliculas",
          localField: "name",
          foreignField: "cast",
          as: "peliculas"
        }
   },
   { $project: { name: 1 ,description: 1, height:1, birth:1, years:1, image:1} }
 ])

 res.json(peliculaActor);
}

如果我向路线发出请求,它将返回我

[
  {
    "_id": "5dc0365e0b2c0c479cb3fba3",
    "name": "Keanu Reeves",
    "description": "es un actor y músico canadiense-estadounidense, nacido en el Líbano. Dedicado a la actuación, tiene entre su repertorio las comedias de la franquicia de Bill y Ted (1989–1991); los thrillers de acción Point Break (1991), Speed (1994) y la franquicia John Wick (2014–2019); el thriller psicológico The Devil's Advocate (1997); el thriller sobrenatural Constantine (2005); y la serie de ciencia ficción y acción The Matrix (1999-2003). También ha participado en películas dramáticas como Dangerous Liaisons (1988), My Own Private Idaho (1991) y Little Buddha (1993), así como en la película de terror y romance Bram Stoker's Dracula (1992).",
    "height": "1.86",
    "birth": "1964-09-02T05:00:00.000Z",
    "years": 55,
    "image": "https://res.cloudinary.com/tq/image/upload/v1572888170/cineencasa/actores/bOlYWhVuOiU6azC4Bw6zlXZ5QTC.jpg"
  }
]

但是在DOM中,我得到了空字段,我认为这是由于文档返回查询的结构所致,我唯一能显示的是使用Actors.findOne({_ id: req.params.id})可以返回{{ 1}},并与{...}一起返回文档Actores.aggregate ([])

希望您能帮助我的朋友

0 个答案:

没有答案