Estoy construyendo mi primera API de Node.js. En el punto final '/posts' tengo un retorno como este:
[ { "POST_ID": 1, "POST_TITLE": "Post N.1", "POST_DESCRIPTION": "Description for Post N.1", "POST_PHOTO_URL": "Url for image 1 of post 1" }, { "POST_ID": 1, "POST_TITLE": "Post N.1", "POST_DESCRIPTION": "Description for Post N.1", "POST_PHOTO_URL": "Url for image 2 of post 1" }, { "POST_ID": 2, "POST_TITLE": "Post N.2", "POST_DESCRIPTION": "Description for Post N.2", "POST_PHOTO_URL": "Url for image 1 of post 2" }, { "POST_ID": 2, "POST_TITLE": "Post N.2", "POST_DESCRIPTION": "Description for Post N.2", "POST_PHOTO_URL": "Url for image 2 of post 2" } ]¿Cómo puedo fusionar los objetos que tienen el mismo POST_ID y hacer de POST_PHOTO_URL una matriz que contenga todas las URL para la misma publicación?
Quiero algo como esto:
responseObj = { postId: 0, postTitle: "Post N.1", postDescription: "Description for Post N.1", postImages: ['first_url', 'second_url'], }; Mi consulta SQL es: SELECT P.POST_ID, P.POST_TITLE, P.POST_DESCRIPTION, PI.POST_PHOTO_URL FROM POST P INNER JOIN POST_ITEMS AS PI ON P.POST_ID = PI.POST_ID SQL SERVER.
No tengo un SERVIDOR SQL para probar esto, pero la salida deseada probablemente podría crearse con la siguiente consulta.
SELECT P.POST_ID AS postId, P.POST_TITLE AS postTitle, P.POST_DESCRIPTION AS postDescription, oa.postImages FROM POST P OUTER APPLY( SELECT PI.POST_PHOTO_URL AS postImages FROM POST_ITEMS PI WHERE PI.POST_ID = P.POST_ID FOR JSON PATH ) oaEsto debería devolver una representación JSON de las POST_PHOTO_URL deseadas. Tienes que analizarlos para obtener tu matriz.
result.forEach(r => { r.postImages = JSON.parse(r.postImages); })