You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Axios请求结果赋值给JavaScript对象的location_geo_point字段

问题修复方案
  • 变量顺序错误:getCoords函数定义在rowData解构之前,此时location变量还未声明,请求参数取值异常;同时函数入参getCoords和内部定义的函数重名,会产生变量覆盖。
  • 异步逻辑处理错误:Axios请求是异步操作,直接将getCoords()返回值赋值给字段,得到的是Promise对象而非接口返回的真实坐标数据。
  • 无返回值:当前getCoords的then回调中仅打印了结果,没有将结果return,就算等待异步完成也无法拿到坐标值。
修复后代码
// 改为异步函数,支持等待接口返回结果
async function createElasticSearchJob(rowData) {
  // 优先解构拿到location,避免取值异常
  const {
    country,
    hiring_company: {
      name: companyName
    },
    id,
    location,
    name,
    posted_time,
    posted_time_friendly,
    snippet,
    state: locationState,
    url,
  } = rowData;

  // 封装坐标请求,把location当参数传入,避免变量污染
  async function getCoords(targetLocation) {
    const res = await axios.get(
      `http://nominatim.openstreetmap.org/search?q=${targetLocation}&format=json&polygon=1&addressdetails=1`
    )
    // 可选链避免数据为空时报错
    return res.data?.[0];
  }

  // 等待坐标请求完成拿到真实结果
  const locationGeoPoint = await getCoords(location);

  // 组装返回对象
  return {
    job_id: id,
    job_title: name,
    location: location,
    num_days_since_posted: posted_time_friendly,
    job_date_posted: posted_time,
    job_date_posted_date_value: posted_time,
    job_url: url,
    job_title_full_from_desc: name,
    job_company_name: companyName,
    job_location: location,
    job_desc_text: snippet,
    job_desc_html: snippet,
    job_source: "ZipRecruiter API",
    job_years_of_experience: null,
    DOC_HASH: id,
    location_geo_point: locationGeoPoint,
  };
}
调用说明

修改后createElasticSearchJob为异步函数,调用时需要用await或者.then获取最终组装完成的对象:

// 方式1:await调用(需要放在async作用域内)
const jobData = await createElasticSearchJob(rowData);

// 方式2:then链式调用
createElasticSearchJob(rowData).then(jobData => {
  // 后续处理逻辑
})

内容的提问来源于stack exchange,提问作者user3109127

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:57:01