gpt4 book ai didi

javascript - 从服务器获取数据时挂载钩子(Hook)(Promise/async)出错

转载 作者:行者123 更新时间:2023-12-04 04:07:15 29 4
gpt4 key购买 nike

我是 Vue 新手,我有一个网页组件(电影歌曲列表),它从页面路由参数(通过 this.$store.state.route.params.movi​​eId)接收一个 movie_id,然后获取实际用户从服务器上的数据库中获取歌曲数据使用命令:this.movi​​e = (await MoviesService.show(movieId)).data,show函数是通过id在db中找到params并将内容发送回前端。

我的问题是,每当我点击查看按钮时,该网站将链接到带有基本框架的特定id页面,但它无法获取电影歌曲列表网页中的内容。 The error demo The snapshot in postman

控制台显示的错误是:

[Vue warn]: Error in mounted hook (Promise/async): "Error: Request failed with status code 500" found in ---> at src/components/ViewMovie.vue at src/App.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>

电影 Controller .js:

const {Movie} = require('../models')

module.exports = {
async show (req, res) {
try {
const movie = await Movie.findById(req.params.movieId)
res.send(movie)
} catch (err) {
res.status(500).send({
error: 'An error has occured trying to fetch the movie'
})
}
},
async post (req, res) {
try {
const movie = await Movie.create(req.body)
res.send(movie)
} catch (err) {
res.status(500).send({
error: 'An error has occured trying to create the movie'
})
}
}
}

电影服务.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() 是您尝试查找电影的方式。您的 ID 是 1。FindById() 需要自动生成的 _id 字段中的数据。 _id 更像是 5d8c369e69ccb034cc31b816

如果你改变:

await Movie.findById(req.params.movieId)

await Movie.findOne({ id: { $eq: req.params.movieId })

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

你得到了什么?有什么变化吗?

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

关于javascript - 从服务器获取数据时挂载钩子(Hook)(Promise/async)出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62291307/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com