【问题标题】:Fetch a specific data from backend [closed]从后端获取特定数据[关闭]
【发布时间】:2021-05-14 06:26:07
【问题描述】:

我有一个获取请求,它工作正常。我的问题是,当我尝试记录特定响应时,我得到了未定义的结果,但是当我记录整个响应时,我得到了正确打印的字符串。如何从后端调用和记录特定的 var。我试过console.log(respone.line),但正如我所说,它记录了undefined

//Backend


function getInfo() {
  const line = "this is test"
  return line
}

async function callGetInfo() {
  const data1 = await getInfo()
  return data1
}

module.exports = {
  callGetInfo
};
//Frontend

function fetcher() {

  fetch(`http://localhost:PORT/api/routePath`)
    .then((res) => {
      return new Promise((resolve, reject) => {
        resolve(res.json())
      })

    }).then((response) => {
        //displays the response
        console.log(response)
        //displays undefined
        console.log(response.line)
      }

    }

  fetcher()

【问题讨论】:

  • 响应是一个字符串。它没有属性line
  • 为此,您的服务器需要返回一个带有属性line 的对象(作为JSON)。您的示例返回一个简单的字符串(没有属性line
  • 你为什么要返回一个新的 Promise?只是return res.json(),这本身就是一个承诺。
  • 那个“后端”代码什么都不做;它不监听任何端口;它不会向任何请求返回 JSON。它只是定义了几个函数,其中一个出于某种原因异步调用了一个同步函数。
  • 这是作业面试还是编码挑战?我很确定我已经看到了具有相同问题的非常相似的代码,例如在await getInfo() 中不必要的await,一个字符串作为repsonse 而不是一个对象,相同的变量和函数名称。我很确定有一个已回答的重复项具有相同的问题和非常相似的代码(如果它没有被删除)。

标签: javascript


【解决方案1】:

响应是一个字符串。它没有属性line

console.log(response) // prints "this is test"
console.log(response.line) // property line doesn't exist.

你可以返回一个对象

function getInfo() {
  const line = "this is test";
  return { line };
}

【讨论】:

    猜你喜欢
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多