2016-10-31 5 views
0

У меня есть два массива с следующим образом: -Извлечение из двух массивов с одинаковыми идентификаторами в объекте

let locationList = [ 
    { 
     id: "1", 
     name: "Texas de Brazil", 
     location: "Albany, NY" 
    } 
    { 
     id: "2", 
     name: "The Riverfront", 
     location: "Troy NY" 
    }, 
]; 

const eventList = [ 
    { 
     id: "0", 
     attendees: [1, 2], 
     title: "Dinner at Texas de Brazil", 
     startTime: new Date("1/15/2016"), 
     description: "Going out to dinner to a fancy restaurant", 
     location: 1 
    }, 
    { 
     id: "1", 
     attendees: [1, 2, 3, 4], 
     title: "Gala", 
     startTime: new Date("2/07/2016"), 
     description: "Have to attend a gala for fundraising with other very important people", 
     location: 2 
    }, 
    { 
     id: "2", 
     attendees: [1, 2, 4, 6], 
     title: "End of Year Celebration", 
     startTime: new Date("5/15/2016"), 
     description: "Going out to dinner to a fancy restaurant, this time to celebrate end of school year", 
     location: 1 
    }, 
]; 

Для местоположения маршрута /: ид, я хочу, чтобы извлечь все детали для расположения и все события из списка событий, которые будут происходить в этом месте, например: для маршрута «location/1», я хочу вернуть имя и местоположение и из списка событий, все событие, которое будет происходить в этом местоположении, т.е. 0 и 2. Как я могу вернуть их. В настоящее время я могу вернуть только детали местоположения, используя следующий код

router.get("/:id", (req, res) => { 
    locationData.getLocation(req.params.id).then((location) => { 
     res.render("misc/location", {location: location}); 
    }); 
}); 

и это моя функция getLocation: -

getLocation: (id) => { 
     if (id === undefined) return Promise.reject("No id provided"); 

     let location = locationList.filter(x => x.id === id).shift(); 
     if (!location) return Promise.reject("No location found") 

     return Promise.resolve(location); 
    } 

P.S - Я не использую MongoDB. Это простые предопределенные массивы с объектами внутри них.

ответ

0

Вам нужно будет проверить события. Простой фильтр:

var locationId = 1; 
var matchedEvents = eventList.filter(function(event){ 
    return event.location === locationId; 
}); 

Это создаст новый массив со всеми соответствующими элементами. Простая проверка соответствия идентификаторов местоположений.

Затем вам нужно будет положить это в конечном результате.

var result = null; 
//...your code here 
//now result is a location object 
result.events = []; 
//...push matchedEvents into the list 
//Resolve the response