提问者:小点点

通过JavaScript对象传递axios响应[重复]


我有一个表示搜索功能的类。 它有一个名为“Execute search”的类,该类根据有关可以在数据库中搜索的属性的信息接受参数:

const axios = require('axios').default

class Search {
    executeSearch (addressLine1, City, Country, Postcode, AskingPrice) {
        axios.get('http://localhost:5000/property/findAny/' + addressLine1 + '/' + City + '/' + Country + '/' + Postcode + '/' + AskingPrice + '/')
            .then(res => {
                console.log(res)
                return res
            })
            .catch(err => {
                return err
            })
    }
}

module.exports = Search

在Vue组件中,我有以下代码:

import Search from '../js/search'

const search = new Search()

export default {
  name: 'Home',
  data() {
    return {
      searchResult: Object
    }
  },
  mounted(){
    this.searchResult = search.executeSearch('test43167', ' ', ' ', ' ', ' ')
    console.log(search.executeSearch('test43167', ' ', ' ', ' ', ' '))
  }
}

其中控制台日志似乎总是在vue组件内部输出未定义的内容,但axios函数中的控制台日志具有预期的数据。

我做错了什么?


共1个答案

匿名用户

通常情况下,我认为应该使用return res而不是使用return promise.resolve(res)(这是正确的),但是如果在返回响应之前没有对其进行任何操作,那么只需返回axios请求即可:

class Search {
    executeSearch (addressLine1, City, Country, Postcode, AskingPrice) {
        return axios.get('http://localhost:5000/property/findAny/' + addressLine1 + '/' + City + '/' + Country + '/' + Postcode + '/' + AskingPrice + '/')    
    }
}

然后在使用此API请求时,可以将SearchResult应用到中的Res。然后

mounted(){
    search.executeSearch('test43167', ' ', ' ', ' ', ' ')
        .then(res => {
            this.searchResult = res
        })
        .catch (err => {
            // handle a failed request
        })
}