【问题标题】:How can I pass an error message from the server backend to vue frontend如何将错误消息从服务器后端传递到 vue 前端
【发布时间】:2022-01-01 04:39:38
【问题描述】:

我正在为 Vue/Vuetify 中构建的应用程序进行错误处理。我正在为一个链接到一个 API 的数据表使用外部分页,该 API 在一段时间内只允许如此多的点击。因此,当用户达到该限制时,我试图通过并在前端向用户显示“请求过多”的错误。

我遇到的问题是将该错误从后端服务器传递到前端。当它在前端出错时,它只会给出 500 错误。但是,服务器日志给了我正在发生的实际错误。我怎样才能让它通过?以下是来自服务器和前端的相关 javascript 代码。

注意:我一直在使用 eventbus 来显示整个项目中的错误。但到目前为止,我还没有从后到前传递任何东西。

后端服务器

module.exports = {

  async find(ctx) {
    var page = ctx.query.page;
    var key = '';
    var locale = ({ location: '', location_type: '', page: page });
    const sdk = require('api')('@');
    try {
      var response = await sdk.auth(key)['grants_funders'](locale);
    }
    catch (err) {
      console.log(err);      
    }
    ;
    // .then(res => console.log(res))
    // .catch(err => console.error(err));
    // console.log(response);
    return response
  }

};

前端

export default {
  name: "Search",
  components: {},
  props: ["funderDirectories", "serverItemsLength"],
  data() {
    return {
      page: 1,
      usericon: usericon,
      greentick: greentick,
      listicon: listicon,
      training: training,
      keyword: null,
      funderHeaders: [
        { text: "Organization", value: "funder_name" },
        { text: "City", value: "funder_city" },
        { text: "Country", value: "funder_country" },
        { text: "Count", value: "grant_count" },
      ],
      myloadingvariable: false,
      pageCount: 1,
      itemsPerPage: 25,
    };
  },
  watch: {
    page() {
      Vue.$funderService.find({ page: this.page }).then((res) => {
        this.funderDirectories = res.data.rows;
        this.serverItemsLength = res.data.total_hits;
      });
    },
  },
  methods: {},

  computed: {
    filteredFunderDirectories() {
      if (!this.keyword) {
        return this.funderDirectories;
      }

      return this.funderDirectories.filter(
        (q) =>
          q.funder_name.toLowerCase().indexOf(this.keyword.toLowerCase()) !== -1
      );
    },
  },
};

【问题讨论】:

  • 请不要发布您的敏感信息,例如 api 密钥

标签: javascript vue.js vuetify.js


【解决方案1】:

终于明白了。将以下内容添加到后端捕获

 return ctx.send({errorStatus:"Too Many Requests. Please Wait"},429)

我可以打电话

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 2015-12-05
    • 2019-10-04
    • 2018-05-10
    • 2020-03-01
    • 2013-02-22
    • 1970-01-01
    相关资源
    最近更新 更多