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