desde el lado del cliente estoy pasando esta matriz de elementos
{ id: '1', quantity: '1' } { id: '2', quantity: '1' }como se muestra a continuación
# Javascript fetch("/purchase", { method: "POST", headers: { "Content-Type": "application/json", Accept: "application/json", }, body: JSON.stringify({ items: items, }), })En el lado del servidor, accedo al item.id que se pasa desde el lado del cliente y mapeo el valor correspondiente en la matriz storeItems, pero aquí estoy sin definir.
# 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 }) })Esto se debe a que item.id contiene una cadena y pasar, por ejemplo, "1" al método get dará como resultado undefined ya que las claves del mapa son del tipo Number . Para solucionar esto, puede convertir la cadena en un número o almacenar los identificadores de elementos como una cadena en lugar de un número:
const storeItem = storeItems.get(Number.parseInt(item.id));O
const storeItems = new Map([ ["1", { price: 10000, name: "Assessment" }], ["2", { price: 20000, name: "Therapy" }], ])en su lado del cliente, está pasando la id de los elementos como una cadena
{ id: '1', quantity: '1' } { id: '2', quantity: '1' } pero en el mapa node.js define el mapa como integer
const storeItems = new Map([ [1, { price: 10000, name: "Assessment" }], [2, { price: 20000, name: "Therapy" }], ]) hay alguna solución, convertir id a entero en
const storeItem = storeItems.get(item.id) y convertir item.id a Integer
const storeItem = storeItems.get(parseInt(item.id))y el resultado final de su nodo js será así:
# 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 }) })