Estoy trabajando con una API en una aplicación Mern, en el backend me gustaría destruir la matriz de objetos, ejecutar una función en un elemento de cada una de las matrices y devolver una nueva matriz de objetos o agregar el nuevo valor a la formación. Aquí está mi controlador
const getObjects = async (req, res) => { const { bucketKey } = req.params const bucket = await new ForgeSDK.ObjectsApi().getObjects( bucketKey, req.params.objectName, req.oauth_client, req.oauth_token ) const bucketObjects = bucket.body.items // const encodedUrn = urnify(objectKey) res.status(StatusCodes.OK).json({ bucketObjects, totalObjects: bucketObjects.length, numOfPages: 1, }) }Entonces, cada elemento en la matriz de bucketObjects tiene una objectKey, me gustaría tomar la objectKey, convertirla en una cadena codificada en Base64 y crear una nueva matriz de objetos.
Aquí está la respuesta que estoy devolviendo en cartero.
"bucketObjects": [ { "bucketKey": "dashboard", "objectKey": "BRISMETRO-BRM-ADLSTSO00-3DM-000020.ifc", "objectId": "urn:adsk.objects:os.object:dashboard/BRISMETRO-BRM-ADLSTSO00-3DM-000020.ifc", "sha1": "4ed04b922c8863ac8323226da2a5f974730d13f0", "size": 937888, "location": "https://developer.api.autodesk.com/oss/v2/buckets/dashboard/objects/BRISMETRO-BRM-ADLSTSO00-3DM-000020.ifc" },Simplemente puede usar la función de mapa para devolver una nueva matriz.
const newArray = bucketObjects.map((object) => { return { ...object, objectKey: conversionToBase64(object.objectKey) } })Transforme cada elemento de su matriz con un simple iterador forEach antes de enviar la respuesta.
const getObjects = async (req, res) => { ... const bucketObjects = bucket.body.items; bucketObjects.forEach(obj => obj.key = new Buffer(obj.objectKey).toString('base64')); res.status(StatusCodes.OK).json({ bucketObjects, ...