【问题标题】:Axios returns error status code 500 when there is data present有数据时axios返回错误状态码500
【发布时间】:2021-09-28 11:05:41
【问题描述】:

我在我的应用程序中使用Laravel 8VueJSAxios,然后每次我尝试从我的数据库中获取所有记录时,它都会返回一个状态码为 500 的错误。即使使用 Postman/ 获取数据时Insomnia 它返回的数据没有错误。

我试图清空它获取数据的表,但错误消失了,它返回状态码为 200 的空数据。

商店模块:

import axios from 'axios'

export default {
    namespaced: true,
    state: {
        courses: [],
        teacher: '',
    },
    getters: {
        allCourses(state) {
            return state.courses
    },
},
actions: {
    async fetchAllCourses({ commit }) {
        const response = await axios.get('teacher/course-management/list')
        console.log(response.data.data)
        commit('SET_COURSES', response.data.data)
    }
},
mutations: {
    SET_COURSES(state, courses) {
        state.courses = courses
    }
}

控制器:

public function fetchAllCourses() {
    try {
        $courses = Course::all()->sortBy('id');

        $data = $courses->transform(function ($course) {
            // ! Get teacher id
            $teacherId = $this->user->teacher->id;
            // ! Get teacher name by id
            $teacherName = $this->getTeacherName($teacherId);

            return [
                'id' => $course->id,
                'teacher_id' => $course->teacher_id,
                'teacher' => $teacherName,
                'section' => $course->section,
                'code' => $course->code,
                'status' => $course->status,
                'image' => $course->image,
            ];
        });

        return $this->success('Request success', $data);
    } catch (\Exception $e) {
        return $this->error($e->getMessage(), $e->getCode());
    }   
}

【问题讨论】:

  • 服务器端设置了 HTTP 错误 500。使用 chrome devs 工具检查来自您网页的请求是否与您在 Postman 中的请求完全匹配。您缺少的查询很可能存在差异。
  • 你在实际 JSON 之前返回和数组
  • @OMiShah 我有一个成功特征方法,可以将我的响应数据转换为 json
  • @OMiShah return [...]transform 回调中。那不是控制器方法的返回值
  • 你的 Laravel 日志对错误有什么看法?

标签: laravel vue.js vuex store


【解决方案1】:

问题解决了。

public function fetchAllCourses() {
        try {
            $courses = Course::all()->sortBy('id');
    
            $data = $courses->transform(function ($course) {
                return [
                    'id' => $course->id,
                    'teacher_id' => $course->teacher_id,
                    'teacher' => $this->getTeacherName($course->teacher_id),
                    'section' => $course->section,
                    'code' => $course->code,
                    'status' => $course->status,
                    'image' => $course->image,
                ];
            });
    
            return $this->success('Request success', $data);
        } catch (\Exception $e) {
            return $this->error($e->getMessage(), $e->getCode());
        }   
    }

【讨论】:

  • 我真的不明白删除 teacher 查找如何解决 Axios 在 Postman 中工作时的问题
  • 从我的第一个代码中,我得到了当前登录用户的$teacherId,而不是$courses中的每个$course中的teacher_id
  • 对不起,我仍然不明白它在 Postman 中是如何工作的,但对于 Axios 却不是
猜你喜欢
  • 2014-10-26
  • 1970-01-01
  • 1970-01-01
  • 2019-07-04
  • 2017-07-12
  • 2020-08-09
  • 2020-04-12
  • 2019-12-13
  • 1970-01-01
相关资源
最近更新 更多