使用 Node.js 和 Firestore 处理来自请求的响应

Processing a Response From a Request using Node.js and Firestore

我已经构建了服务器和客户端,但在处理服务器发送过来的客户端响应时遇到问题。我使用了 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 它

时,我得到的数据看起来像这样

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

我应该在返回的 JSON 中看到类似“{'key': 'value'}”或类似内容的内容,但它不存在。不确定我在做什么。无法在线找到任何处理响应和从 Node 客户端提取数据的示例。

fetch 的第一个 then() 不会 直接解析 response body。它解析 response object。您应该 return 来自第一个解析器的 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));