I am trying to create my first API using Node.js (also a first). I have two arrays, “rooms” and “room_availability” I would like to add all “room_availability” to “rooms” where the room code matches. If there I didn’t provide enough code below to help, please let me know, but I think this should do it.
rooms Array:
[
{
"id": 61,
"resort": "Boardwalk Villas",
"room": "Deluxe Studio",
"view": "Standard View",
"roomcat": "studio",
"roomcode": "ZA",
"sleeps": 5,
"sqfoot": "359",
"description": "Views of Resort Grounds or Parking Area",
"bedding": "1 queen-size bed, 1 full-size sleeper sofa, 1 single pull-down bed",
"resort_link": "../boardwalk",
"layout_img": "../images/checkavail-imgs/room_layout/bwv/bwv-studio.jpg",
"room_img": "../images/checkavail-imgs/room_image/bwv/bwv-studio-standard.jpg",
"roomimg_thumb": "../images/checkavail-imgs/room_thumb/bwv/bwv-studio-standard-thumb.jpg"
},
{
"id": 62,
"resort": "Boardwalk Villas",
"room": "Deluxe Studio",
"view": "Boardwalk View",
"roomcat": "studio",
"roomcode": "SZ",
"sleeps": 5,
"sqfoot": "359",
"description": "Views of Boardwalk",
"bedding": "1 queen-size bed, 1 full-size sleeper sofa, 1 single pull-down bed",
"resort_link": "../boardwalk",
"layout_img": "../images/checkavail-imgs/room_layout/bwv/bwv-studio.jpg",
"room_img": "../images/checkavail-imgs/room_image/bwv/bwv-studio-boardwalk.jpg",
"roomimg_thumb": "../images/checkavail-imgs/room_thumb/bwv/bwv-studio-boardwalk-thumb.jpg"
},
{
"id": 63,
"resort": "Boardwalk Villas",
"room": "Deluxe Studio",
"view": "Garden/Pool View",
"roomcat": "studio",
"roomcode": "AZ",
"sleeps": 5,
"sqfoot": "359",
"description": "View of Pool, Water or Garden Areas",
"bedding": "1 queen-size bed, 1 full-size sleeper sofa, 1 single pull-down bed",
"resort_link": "../boardwalk",
"layout_img": "../images/checkavail-imgs/room_layout/bwv/bwv-studio.jpg",
"room_img": "../images/checkavail-imgs/room_image/bwv/bwv-studio-gardenpool.jpg",
"roomimg_thumb": "../images/checkavail-imgs/room_thumb/bwv/bwv-studio-gardenpool-thumb.jpg"
},
{
"id": 64,
"resort": "Boardwalk Villas",
"room": "1-Bedroom Villa",
"view": "Standard View",
"roomcat": "onebed",
"roomcode": "ZB",
"sleeps": 5,
"sqfoot": "712",
"description": "Views of Resort Grounds or Parking Area",
"bedding": "1 king-size bed, 1 queen-size sleeper sofa - NO ADDITIONAL BEDDING",
"resort_link": "../boardwalk",
"layout_img": "../images/checkavail-imgs/room_layout/bwv/bwv-1br.jpg",
"room_img": "../images/checkavail-imgs/room_image/bwv/bwv-1br-standard.jpg",
"roomimg_thumb": "../images/checkavail-imgs/room_thumb/bwv/bwv-1br-standard-thumb.jpg"
},
{
"id": 65,
"resort": "Boardwalk Villas",
"room": "1-Bedroom Villa",
"view": "Boardwalk View",
"roomcat": "onebed",
"roomcode": "OZ",
"sleeps": 5,
"sqfoot": "712",
"description": "Views of Boardwalk",
"bedding": "1 king-size bed, 1 queen-size sleeper sofa - NO ADDITIONAL BEDDING",
"resort_link": "../boardwalk",
"layout_img": "../images/checkavail-imgs/room_layout/bwv/bwv-1br.jpg",
"room_img": "../images/checkavail-imgs/room_image/bwv/bwv-1br-boardwalk.jpg",
"roomimg_thumb": "../images/checkavail-imgs/room_thumb/bwv/bwv-1br-boardwalk-thumb.jpg"
},
{
"id": 66,
"resort": "Boardwalk Villas",
"room": "1-Bedroom Villa",
"view": "Garden/Pool View",
"roomcat": "onebed",
"roomcode": "BZ",
"sleeps": 5,
"sqfoot": "712",
"description": "View of Pool, Water or Garden Areas",
"bedding": "1 king-size bed, 1 queen-size sleeper sofa - NO ADDITIONAL BEDDING",
"resort_link": "../boardwalk",
"layout_img": "../images/checkavail-imgs/room_layout/bwv/bwv-1br.jpg",
"room_img": "../images/checkavail-imgs/room_image/bwv/bwv-1br-gardenpool.jpg",
"roomimg_thumb": "../images/checkavail-imgs/room_thumb/bwv/bwv-1br-gardenpool-thumb.jpg"
},
{
"id": 67,
"resort": "Boardwalk Villas",
"room": "2-Bedroom Lock-Off Villa",
"view": "Standard View",
"roomcat": "twobed",
"roomcode": "ZL",
"sleeps": 9,
"sqfoot": "1,072",
"description": "Views of Resort Grounds or Parking Area",
"bedding": "1 king-size bed, 1 queen-size bed, 1 full-size sleeper sofa, 1 queen-size sleeper sofa, 1 single pull-down bed",
"resort_link": "../boardwalk",
"layout_img": "../images/checkavail-imgs/room_layout/bwv/bwv-2br-lo.jpg",
"room_img": "../images/checkavail-imgs/room_image/bwv/bwv-2br-lo-standard.jpg",
"roomimg_thumb": "../images/checkavail-imgs/room_thumb/bwv/bwv-2br-lo-standard-thumb.jpg"
},
{
"id": 68,
"resort": "Boardwalk Villas",
"room": "2-Bedroom Lock-Off Villa",
"view": "Boardwalk View",
"roomcat": "twobed",
"roomcode": "TZ",
"sleeps": 9,
"sqfoot": "1,072",
"description": "Views of Boardwalk",
"bedding": "1 king-size bed, 1 queen-size bed, 1 full-size sleeper sofa, 1 queen-size sleeper sofa, 1 single pull-down bed",
"resort_link": "../boardwalk",
"layout_img": "../images/checkavail-imgs/room_layout/bwv/bwv-2br-lo.jpg",
"room_img": "../images/checkavail-imgs/room_image/bwv/bwv-2br-lo-boardwalk.jpg",
"roomimg_thumb": "../images/checkavail-imgs/room_thumb/bwv/bwv-2br-lo-boardwalk-thumb.jpg"
},
{
"id": 69,
"resort": "Boardwalk Villas",
"room": "2-Bedroom Lock-Off Villa",
"view": "Garden/Pool View",
"roomcat": "twobed",
"roomcode": "LZ",
"sleeps": 9,
"sqfoot": "1,072",
"description": "View of Pool, Water or Garden Areas",
"bedding": "1 king-size bed, 1 queen-size bed, 1 full-size sleeper sofa, 1 queen-size sleeper sofa, 1 single pull-down bed",
"resort_link": "../boardwalk",
"layout_img": "../images/checkavail-imgs/room_layout/bwv/bwv-2br-lo.jpg",
"room_img": "../images/checkavail-imgs/room_image/bwv/bwv-2br-lo-gardenpool.jpg",
"roomimg_thumb": "../images/checkavail-imgs/room_thumb/bwv/bwv-2br-lo-gardenpool-thumb.jpg"
},
{
"id": 70,
"resort": "Boardwalk Villas",
"room": "3-Bedroom Grand Villa",
"view": "Boardwalk View",
"roomcat": "threebed",
"roomcode": "DZ",
"sleeps": 12,
"sqfoot": "2,142",
"description": "Views of Boardwalk",
"bedding": "1 king-size bed, 4 queen-size beds, 1 queen-size sleeper sofa",
"resort_link": "../boardwalk",
"layout_img": "../images/checkavail-imgs/room_layout/bwv/bwv-3br.jpg",
"room_img": "../images/checkavail-imgs/room_image/bwv/bwv-3br-boardwalk.jpg",
"roomimg_thumb": "../images/checkavail-imgs/room_thumb/bwv/bwv-3br-boardwalk-thumb.jpg"
}
]
room_availability Array:
[
{
"resort": "BWALK",
"room": "AZ",
"staydate": "2023-09-05T04:00:00.000Z",
"available": 0,
"points": 14
},
{
"resort": "BWALK",
"room": "AZ",
"staydate": "2023-09-06T04:00:00.000Z",
"available": 0,
"points": 14
},
{
"resort": "BWALK",
"room": "AZ",
"staydate": "2023-09-07T04:00:00.000Z",
"available": 0,
"points": 14
},
{
"resort": "BWALK",
"room": "AZ",
"staydate": "2023-09-08T04:00:00.000Z",
"available": 0,
"points": 16
},
{
"resort": "BWALK",
"room": "BZ",
"staydate": "2023-09-05T04:00:00.000Z",
"available": 0,
"points": 26
},
{
"resort": "BWALK",
"room": "BZ",
"staydate": "2023-09-06T04:00:00.000Z",
"available": 1,
"points": 26
},
{
"resort": "BWALK",
"room": "BZ",
"staydate": "2023-09-07T04:00:00.000Z",
"available": 0,
"points": 26
},
{
"resort": "BWALK",
"room": "BZ",
"staydate": "2023-09-08T04:00:00.000Z",
"available": 0,
"points": 29
},
{
"resort": "BWALK",
"room": "DZ",
"staydate": "2023-09-05T04:00:00.000Z",
"available": 1,
"points": 76
},
{
"resort": "BWALK",
"room": "DZ",
"staydate": "2023-09-06T04:00:00.000Z",
"available": 0,
"points": 76
},
{
"resort": "BWALK",
"room": "DZ",
"staydate": "2023-09-07T04:00:00.000Z",
"available": 1,
"points": 76
},
{
"resort": "BWALK",
"room": "DZ",
"staydate": "2023-09-08T04:00:00.000Z",
"available": 1,
"points": 88
},
{
"resort": "BWALK",
"room": "LZ",
"staydate": "2023-09-05T04:00:00.000Z",
"available": 0,
"points": 35
},
{
"resort": "BWALK",
"room": "LZ",
"staydate": "2023-09-06T04:00:00.000Z",
"available": 0,
"points": 35
},
{
"resort": "BWALK",
"room": "LZ",
"staydate": "2023-09-07T04:00:00.000Z",
"available": 0,
"points": 35
},
{
"resort": "BWALK",
"room": "LZ",
"staydate": "2023-09-08T04:00:00.000Z",
"available": 0,
"points": 40
},
{
"resort": "BWALK",
"room": "OZ",
"staydate": "2023-09-05T04:00:00.000Z",
"available": 0,
"points": 26
},
{
"resort": "BWALK",
"room": "OZ",
"staydate": "2023-09-06T04:00:00.000Z",
"available": 0,
"points": 26
},
{
"resort": "BWALK",
"room": "OZ",
"staydate": "2023-09-07T04:00:00.000Z",
"available": 0,
"points": 26
},
{
"resort": "BWALK",
"room": "OZ",
"staydate": "2023-09-08T04:00:00.000Z",
"available": 0,
"points": 29
},
{
"resort": "BWALK",
"room": "SZ",
"staydate": "2023-09-05T04:00:00.000Z",
"available": 0,
"points": 14
},
{
"resort": "BWALK",
"room": "SZ",
"staydate": "2023-09-06T04:00:00.000Z",
"available": 0,
"points": 14
},
{
"resort": "BWALK",
"room": "SZ",
"staydate": "2023-09-07T04:00:00.000Z",
"available": 0,
"points": 14
},
{
"resort": "BWALK",
"room": "SZ",
"staydate": "2023-09-08T04:00:00.000Z",
"available": 0,
"points": 16
},
{
"resort": "BWALK",
"room": "TZ",
"staydate": "2023-09-05T04:00:00.000Z",
"available": 0,
"points": 35
},
{
"resort": "BWALK",
"room": "TZ",
"staydate": "2023-09-06T04:00:00.000Z",
"available": 0,
"points": 35
},
{
"resort": "BWALK",
"room": "TZ",
"staydate": "2023-09-07T04:00:00.000Z",
"available": 0,
"points": 35
},
{
"resort": "BWALK",
"room": "TZ",
"staydate": "2023-09-08T04:00:00.000Z",
"available": 0,
"points": 40
},
{
"resort": "BWALK",
"room": "ZA",
"staydate": "2023-09-05T04:00:00.000Z",
"available": 0,
"points": 9
},
{
"resort": "BWALK",
"room": "ZA",
"staydate": "2023-09-06T04:00:00.000Z",
"available": 0,
"points": 9
},
{
"resort": "BWALK",
"room": "ZA",
"staydate": "2023-09-07T04:00:00.000Z",
"available": 0,
"points": 9
},
{
"resort": "BWALK",
"room": "ZA",
"staydate": "2023-09-08T04:00:00.000Z",
"available": 0,
"points": 13
},
{
"resort": "BWALK",
"room": "ZB",
"staydate": "2023-09-05T04:00:00.000Z",
"available": 0,
"points": 19
},
{
"resort": "BWALK",
"room": "ZB",
"staydate": "2023-09-06T04:00:00.000Z",
"available": 0,
"points": 19
},
{
"resort": "BWALK",
"room": "ZB",
"staydate": "2023-09-07T04:00:00.000Z",
"available": 0,
"points": 19
},
{
"resort": "BWALK",
"room": "ZB",
"staydate": "2023-09-08T04:00:00.000Z",
"available": 0,
"points": 27
},
{
"resort": "BWALK",
"room": "ZL",
"staydate": "2023-09-05T04:00:00.000Z",
"available": 0,
"points": 29
},
{
"resort": "BWALK",
"room": "ZL",
"staydate": "2023-09-06T04:00:00.000Z",
"available": 0,
"points": 29
},
{
"resort": "BWALK",
"room": "ZL",
"staydate": "2023-09-07T04:00:00.000Z",
"available": 0,
"points": 29
},
{
"resort": "BWALK",
"room": "ZL",
"staydate": "2023-09-08T04:00:00.000Z",
"available": 0,
"points": 35
}
]
My Javascript (what I have tried):
const app = express()
const PORT = process.env.PORT
app.get("/resort-info/rooms", async (req, res) => {
const rooms = await getRooms()
res.send(rooms);
})
app.get("/resort-info/room/:roomcode", async (req, res) => {
const roomcode = req.params.roomcode
const room = await getRoom(roomcode)
res.send(room);
})
app.get("/resort-info/resort/:resort", async (req, res) => {
const resort = req.params.resort
const resort_rooms = await getRoomsByResort(resort)
res.send(resort_rooms);
})
app.get("/resort-info/room-availability/start/:start/end/:end", async (req, res) => {
const rooms = await getRooms()
const start = req.params.start
const end = req.params.end
const room_availability = await getRoomAvailability(start, end)
let combined = rooms.map(item => ({ ...item,
dates: room_availability.filter(f => f.roomcode == item.roomcode)
}));
//res.send(room_availability);
//res.send(rooms);
res.send(combined);
})
Current results:
[
{
"id": 61,
"resort": "Boardwalk Villas",
"room": "Deluxe Studio",
"view": "Standard View",
"roomcat": "studio",
"roomcode": "ZA",
"sleeps": 5,
"sqfoot": "359",
"description": "Views of Resort Grounds or Parking Area",
"bedding": "1 queen-size bed, 1 full-size sleeper sofa, 1 single pull-down bed",
"resort_link": "../boardwalk",
"layout_img": "../images/checkavail-imgs/room_layout/bwv/bwv-studio.jpg",
"room_img": "../images/checkavail-imgs/room_image/bwv/bwv-studio-standard.jpg",
"roomimg_thumb": "../images/checkavail-imgs/room_thumb/bwv/bwv-studio-standard-thumb.jpg",
"dates": []
},
{
"id": 62,
"resort": "Boardwalk Villas",
"room": "Deluxe Studio",
"view": "Boardwalk View",
"roomcat": "studio",
"roomcode": "SZ",
"sleeps": 5,
"sqfoot": "359",
"description": "Views of Boardwalk",
"bedding": "1 queen-size bed, 1 full-size sleeper sofa, 1 single pull-down bed",
"resort_link": "../boardwalk",
"layout_img": "../images/checkavail-imgs/room_layout/bwv/bwv-studio.jpg",
"room_img": "../images/checkavail-imgs/room_image/bwv/bwv-studio-boardwalk.jpg",
"roomimg_thumb": "../images/checkavail-imgs/room_thumb/bwv/bwv-studio-boardwalk-thumb.jpg",
"dates": []
}
]
Desired results:
[
{
"id": 61,
"resort": "Boardwalk Villas",
"room": "Deluxe Studio",
"view": "Standard View",
"roomcat": "studio",
"roomcode": "ZA",
"sleeps": 5,
"sqfoot": "359",
"description": "Views of Resort Grounds or Parking Area",
"bedding": "1 queen-size bed, 1 full-size sleeper sofa, 1 single pull-down bed",
"resort_link": "../boardwalk",
"layout_img": "../images/checkavail-imgs/room_layout/bwv/bwv-studio.jpg",
"room_img": "../images/checkavail-imgs/room_image/bwv/bwv-studio-standard.jpg",
"roomimg_thumb": "../images/checkavail-imgs/room_thumb/bwv/bwv-studio-standard-thumb.jpg",
"dates": [
{
"resort": "BWALK",
"room": "ZA",
"staydate": "2023-09-05T04:00:00.000Z",
"available": 0,
"points": 9
},
{
"resort": "BWALK",
"room": "ZA",
"staydate": "2023-09-06T04:00:00.000Z",
"available": 0,
"points": 9
},
{
"resort": "BWALK",
"room": "ZA",
"staydate": "2023-09-07T04:00:00.000Z",
"available": 0,
"points": 9
},
{
"resort": "BWALK",
"room": "ZA",
"staydate": "2023-09-08T04:00:00.000Z",
"available": 0,
"points": 13
}
]
},
{
"id": 62,
"resort": "Boardwalk Villas",
"room": "Deluxe Studio",
"view": "Boardwalk View",
"roomcat": "studio",
"roomcode": "SZ",
"sleeps": 5,
"sqfoot": "359",
"description": "Views of Boardwalk",
"bedding": "1 queen-size bed, 1 full-size sleeper sofa, 1 single pull-down bed",
"resort_link": "../boardwalk",
"layout_img": "../images/checkavail-imgs/room_layout/bwv/bwv-studio.jpg",
"room_img": "../images/checkavail-imgs/room_image/bwv/bwv-studio-boardwalk.jpg",
"roomimg_thumb": "../images/checkavail-imgs/room_thumb/bwv/bwv-studio-boardwalk-thumb.jpg",
"dates": [
{
"resort": "BWALK",
"room": "SZ",
"staydate": "2023-09-05T04:00:00.000Z",
"available": 0,
"points": 14
},
{
"resort": "BWALK",
"room": "SZ",
"staydate": "2023-09-06T04:00:00.000Z",
"available": 0,
"points": 14
},
{
"resort": "BWALK",
"room": "SZ",
"staydate": "2023-09-07T04:00:00.000Z",
"available": 0,
"points": 14
},
{
"resort": "BWALK",
"room": "SZ",
"staydate": "2023-09-08T04:00:00.000Z",
"available": 0,
"points": 16
}
]
}
]