访问从客户端传递的nodejs中的值的问题
Issues in accessing values in nodejs passed from client side
我从客户端传递这个项目数组
{ id: '1', quantity: '1' }
{ id: '2', quantity: '1' }
如下图
# Javascript
fetch("/purchase", {
method: "POST",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
},
body: JSON.stringify({
items: items,
}),
})
在服务器端,我访问从客户端传递的 item.id 并将相应的值映射到 storeItems 数组中,但在这里我变得不确定。
# Nodejs
const storeItems = new Map([
[1, { price: 10000, name: "Assessment" }],
[2, { price: 20000, name: "Therapy" }],
])
app.post("/purchase", (req, res) => {
req.body.items.forEach(function(item){
console.log(item.id) //this works
const storeItem = storeItems.get(item.id)
console.log(storeItem) //getting undefined
})
})
那是因为 item.id
持有一个字符串并传递例如get
方法的“1”将导致 undefined
,因为地图的键是 Number
类型。要解决此问题,您可以将字符串转换为数字或将项目 ID 存储为字符串而不是数字:
const storeItem = storeItems.get(Number.parseInt(item.id));
或
const storeItems = new Map([
["1", { price: 10000, name: "Assessment" }],
["2", { price: 20000, name: "Therapy" }],
])
在您的客户端,您将 id
项作为字符串传递
{ id: '1', quantity: '1' }
{ id: '2', quantity: '1' }
但在 node.js 地图中,您将地图定义为 integer
const storeItems = new Map([
[1, { price: 10000, name: "Assessment" }],
[2, { price: 20000, name: "Therapy" }],
])
有一些解决办法,
将 id
转换为
中的整数
const storeItem = storeItems.get(item.id)
并将item.id
转换为整数
const storeItem = storeItems.get(parseInt(item.id))
你的节点 js 的最终结果将是这样的:
# Nodejs
const storeItems = new Map([
[1, { price: 10000, name: "Assessment" }],
[2, { price: 20000, name: "Therapy" }],
])
app.post("/purchase", (req, res) => {
req.body.items.forEach(function(item){
console.log(item.id) //this works
const storeItem = storeItems.get(parseInt(item.id)) //// change this line
console.log(storeItem) //getting undefined
})
})
我从客户端传递这个项目数组
{ id: '1', quantity: '1' }
{ id: '2', quantity: '1' }
如下图
# Javascript
fetch("/purchase", {
method: "POST",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
},
body: JSON.stringify({
items: items,
}),
})
在服务器端,我访问从客户端传递的 item.id 并将相应的值映射到 storeItems 数组中,但在这里我变得不确定。
# Nodejs
const storeItems = new Map([
[1, { price: 10000, name: "Assessment" }],
[2, { price: 20000, name: "Therapy" }],
])
app.post("/purchase", (req, res) => {
req.body.items.forEach(function(item){
console.log(item.id) //this works
const storeItem = storeItems.get(item.id)
console.log(storeItem) //getting undefined
})
})
那是因为 item.id
持有一个字符串并传递例如get
方法的“1”将导致 undefined
,因为地图的键是 Number
类型。要解决此问题,您可以将字符串转换为数字或将项目 ID 存储为字符串而不是数字:
const storeItem = storeItems.get(Number.parseInt(item.id));
或
const storeItems = new Map([
["1", { price: 10000, name: "Assessment" }],
["2", { price: 20000, name: "Therapy" }],
])
在您的客户端,您将 id
项作为字符串传递
{ id: '1', quantity: '1' }
{ id: '2', quantity: '1' }
但在 node.js 地图中,您将地图定义为 integer
const storeItems = new Map([
[1, { price: 10000, name: "Assessment" }],
[2, { price: 20000, name: "Therapy" }],
])
有一些解决办法,
将 id
转换为
const storeItem = storeItems.get(item.id)
并将item.id
转换为整数
const storeItem = storeItems.get(parseInt(item.id))
你的节点 js 的最终结果将是这样的:
# Nodejs
const storeItems = new Map([
[1, { price: 10000, name: "Assessment" }],
[2, { price: 20000, name: "Therapy" }],
])
app.post("/purchase", (req, res) => {
req.body.items.forEach(function(item){
console.log(item.id) //this works
const storeItem = storeItems.get(parseInt(item.id)) //// change this line
console.log(storeItem) //getting undefined
})
})