【问题标题】:Processing a Response From a Request using Node.js and Firestore使用 Node.js 和 Firestore 处理来自请求的响应
【发布时间】:2021-10-26 20:47:41
【问题描述】:

我已经构建了服务器和客户端,但在处理服务器发送过来的客户端响应时遇到问题。我使用了 res.send(data) 和 res.json(data),但是客户端处理的响应不包含服务器发回的任何信息。

这是我的服务器代码。我正在删除一个项目,只是想发回一些随机数据,看看我是否可以在客户端收到它。

app.delete('/deleteReward/:id', (req, res) => {
  console.log('\n\n\n\nInside delete\n\n\n\n')
  console.log(req.params.id)

  var rewardId = req.params.id

  const sessionCookie = req.cookies.session || "";

  var idToken = ""
  var type = ""
  if (sessionCookie) {
    idToken = sessionCookie['idToken']
    type = sessionCookie['type']
  }

  console.log("Printing session cookie")
  console.log(sessionCookie)
  admin
    .auth()
    .verifySessionCookie(idToken, true /** checkRevoked */)
    .then((decodedClaims) => {
      console.log(decodedClaims.user_id)
      deleteReward(decodedClaims.user_id, rewardId)
      // res.send("new data being sent")
    })
    .catch((error) => {
      console.log(error)
    });

    res.json({'key': 'value'})
})

这是我在客户端的代码

for(var i = 0; i < rewardDeleteButtons.length; i++) {
        var deleteButton = rewardDeleteButtons[i]
        deleteButton.addEventListener('click', function(e) {
            console.log(document.cookie)
            console.log(this.value)
            var response = fetch("/deleteReward/" + this.value, {
                method: "DELETE",
                headers: {
                Accept: "application/json",
                "Content-Type": "application/json",
                "CSRF-Token": Cookies.get("XSRF-TOKEN"),
                },
            });

            response.then((data) => {
                console.log(data)
            })
        })
    }

当我 console.log 时,我得到的数据看起来像这样

响应 {type: "basic", url: "http://localhost:5000/deleteReward/1", redirected: false, status: 200, ok: true, ...}body: (...)bodyUsed: falseheaders: 标题{}ok: trueredirected: falsestatus: 200statusText: "OK"type: "basic"url: "http://localhost:5000/deleteReward/1"[[Prototype]]: Response

我应该在返回的 JSON 中看到类似 "{'key': 'value'}" 或类似的东西,但它不存在。不知道我在做什么。在客户端上从 Node 中处理响应和提取数据的在线示例无法找到。

【问题讨论】:

    标签: javascript node.js firebase google-cloud-firestore response


    【解决方案1】:

    fetch 的第一个 then() 块不直接解析 response body。它解决了response object。您应该从第一个解析器返回 JSON response 并使用第二个 then() 来使用它。

    更多信息: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

    代码应该是这样的

    response
      .then(res => res.json())
      .then(data => console.log(data));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-26
      • 2015-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 2016-12-12
      相关资源
      最近更新 更多