Javascript 从服务器获取数据时,挂载的钩子(承诺/异步)出错

Javascript 从服务器获取数据时,挂载的钩子(承诺/异步)出错,javascript,express,vue.js,Javascript,Express,Vue.js,我是Vue新手,我有一个网页组件(movie song list),它从页面路由参数(通过此.$store.state.route.params.movieId)接收电影id,然后使用以下命令从服务器上的数据库获取实际用户歌曲数据:this.movie=(wait MoviesService.show(movieId)).data,show功能是通过id在db中查找参数,并将内容发送回前端 我的问题是,每当我点击“查看”按钮时,网站都会链接到具有基本框架的特定id页面,但它无法获取电影歌曲列表网

我是Vue新手,我有一个网页组件(movie song list),它从页面路由参数(通过此.$store.state.route.params.movieId)接收电影id,然后使用以下命令从服务器上的数据库获取实际用户歌曲数据:this.movie=(wait MoviesService.show(movieId)).data,show功能是通过id在db中查找参数,并将内容发送回前端

我的问题是,每当我点击“查看”按钮时,网站都会链接到具有基本框架的特定id页面,但它无法获取电影歌曲列表网页中的内容

控制台中显示的错误为:

[Vue warn]:挂载钩子中的错误(承诺/异步):“错误:请求” 失败,在-->中找到状态代码为“500” src/App.vue上的src/components/ViewMovie.vue

ViewMovie.vue:

<template>
<panel title= "Movies theme song list">
      <div class="movie-title">
          {{movie.title}}
      </div>
      <div class="movie-artist">
          {{movie.artist}}
      </div>
      <div class="movie-album">
          {{movie.album}}
      </div>
      </panel>
</template>

<script>
import MoviesService from '@/services/MoviesService'
import Panel from '@/components/Panel'
export default {
  async mounted () {
    const movieId = this.$store.state.route.params.movieId
    this.movie = (await MoviesService.show(movieId)).data
  },
  data () {
    return {
      movie: {}
    }
  },
  components: {
    Panel
  }
}
</script>
MoviesService.js:

import Api from '@/services/Api'

export default {
  index () {
    return Api().get('movies')
  },
  show (movieId) {
    return Api().get(`movies/${movieId}`)
  },
  post (movie) {
    return Api().post('movies', movie)
  }
}

我在数据库中看不到您的实际电影对象,因此我将进行部分假设

findById()是您尝试查找电影的方式。你的身份证号码是1。FindById()需要自动生成的_id字段中的数据。_id更接近于
5d8c369e69ccb034cc31b816

如果您更改:

await Movie.findById(req.params.movieId)

如果数据库对象的字母大写,请将此处的id更改为id

你得到了什么?有变化吗


可能值得展示一个包含整个电影数据库条目的原始对象,以查看其中的所有内容,如果我走错了路,可以进一步提供帮助

将find()更改为findOne(),以避免返回数组并导致可能需要的单独调整谢谢,它可以工作!我假设findById()将触发findOne()中间件,这是因为我传递的是一个具有id属性的对象,而不是字符串或ObjectId实例吗?findById(id)只是findOne({u id:id})的一个稍微干净的语法。很抱歉,在从歌曲列表页面获取内容后,我遇到了另一个问题。findOne()在第一个id页中按id获取内容方面效果很好,但以下id页(即id:2)在第一个id页中都获得相同的内容,我想知道该网页是否只接收第一个电影id数据?[错误:我的第一个答案甚至还没有被标记为您需要的。您的图像链接似乎不起作用,因此我看不到您现在收到的错误。
await Movie.findById(req.params.movieId)
await Movie.findOne({ id: { $eq: req.params.movieId })