array.map関数を使用すると、オブジェクトにデータがいくつか取得されています。しかし、私は配列でそれを取得する必要があります。この問題はイメージの関数で発生します。array.map()関数を使用してjavascriptでオブジェクトを取得する
EBIT:array.map機能を含む私のコードの
一部は、コードが当面の問題与えられた混乱と思われる場合は、以下の(申し訳ありませんように見えますが、私は取り残されていたので、いくつかの混乱があるように見えました前のコードの残りの部分):
:function getVenues(page, size, venues) {
page = page || 0;
size = size || 200;
venues = venues || [];
return axios
.get(`https://app.ticketmaster.com/discovery/v2/venues.json?apikey=MYAPIKEY&page=${page}&size=${size}&countryCode=DK`)
.then(response => response.data._embedded.venues)
.then(rawVenues => {
rawVenues.forEach(venue => venues.push(venue));
if (rawVenues.length < size) {
// All done return the compiled list.
return venues;
}
// Recurse over the next set of venues by adding another promise to the chain.
return getVenues(page + 1, size, venues);
});
}
function getEvents(page, size, events) {
page = page || 0;
size = size || 200;
events = events || [];
return axios
.get(`https://app.ticketmaster.com/discovery/v2/events.json?apikey=MYAPIKEY&countryCode=DK&size=${size}&page=${page}`)
.then(response => response.data._embedded.events)
.then(rawEvents => {
rawEvents.forEach(event => events.push(event));
if (rawEvents.length < size) {
// All done return the compiled list.
return events;
}
// Recurse over the next set of events by adding another promise to the chain.
return getEvents(page + 1, size, events);
});
}
app.get('/tm2', (req, res) => {
getVenues().then(rawVenues => {
const venuesToBeInserted = rawVenues.map(venue => {
return {
sourceID: venue.id,
venue: venue.name,
postalCode: venue.postalCode,
city: venue.city.name,
country: venue.country.name,
countryCode: venue.country.countryCode,
address: !!venue.address ? venue.address.line1 : null,
longitude: !!venue.location ? venue.location.longitude : null,
latitude: !!venue.location ? venue.location.latitude : null,
source: 'ticketmaster'
};
});
// Return promise so errors bubble up the chain...
return Venue.create(venuesToBeInserted).then(venues => {
console.log("venues inserted");
// Return promise so errors bubble up the chain...
return getEvents().then(rawEvents => {
const eventsToBeInserted = rawEvents.map(event => {
return {
name: event.name.trim(),
slug: slugify(event.name.trim()).toLowerCase(),
sourceID: !!event._embedded.venues ? event._embedded.venues.map(sourceIDs => {
return {
sourceID: !!sourceIDs ? sourceIDs.id : []
}
}) : [],
tags: !!event.classifications ? event.classifications.map(tag => {
return {
tags: !!tag ? [tag.segment.name, tag.genre.name] : [],
}
}) : [],
images: !!event.images ? event.images.map(image => {
return {
images: !!image ? image.url : []
}
}) : []
}
})
// Return promise so errors bubble up the chain...
return Event.create(eventsToBeInserted).then(events => {
console.log("events inserted");
});
});
});
}).then(() => { // This then is fired after all of the promises above have resolved...
return Event.find({}).select({
genres: 1,
tag: 1
}).limit(30).populate('event').populate('venue').then(events => {
console.log(util.inspect(events));
res.send(events);
});
}).catch(err => { // Catches any error during execution.
console.error(err);
res.status(500).send(err);
});
});
私の現在の出力は次のようになります3210
images:
[ { images: 'url_1' },
{ images: 'url_2' },
{ images: 'url_3' } ]
は、私は、次の形式でそれを取得したい:
images:
[ { 'url_1' },
{ 'url_2' },
{ 'url_3' } ]
スニペットツール(Ctrl + M)を使用して作業サンプルを投稿することを検討します。これにより、回答者は問題に正確な解決策を投稿できます。 – ideaboxer
私はあなたの 'map()'をすべてインライン化した理由を理解するのが難しいです。あなたのコードをより小さな塊に分割して検証した場合、もっと読みやすくなります。 '!! event.classifications? ...:[] '他の場所のどこかで、あなたのコードをより簡潔にすることができます。 –
ログやその他のテキストを画像として投稿しないでください。 –