Hi all,
I’m doing a little project to load some images from Nasa’s image API.
I’ve created an image model with ember data and managed to load the following data using external API from nasa - https://images-api.nasa.gov/search ?q=apollo
The last property that I would like to include in my image model is a string (link of json object e.g. https://images-assets.nasa.gov/image/as11-40-5874/collection.json), and going to this link, you get an array of strings (image urls).
What I want is to have an array of these image urls as the value of href instead of the json link that points to these arrays. How do I go about getting ember data to load these arrays from the said link in this model? Do I need to create another model (as image-urls)? They are just arrays with no ids, so I’m not sure if this is appropriate.
My image model:
"nasa_id": "as11-40-5874",
"center": "JSC",
"date_created": "1969-07-21T00:00:00Z",
"description": “some string”,
"keywords": [ "APOLLO 11 FLIGHT", "MOON", "LUNAR SURFACE", "LUNAR BASES", "LUNAR MODULE", "ASTRONAUTS", "EXTRAVEHICULAR ACIVITY" ], "media_type": "image",
"title": “some string“
“href”: "https://images-assets.nasa.gov/image/as11-40-5874/collection.json"
My adapter (adapters/image):
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
host: 'https://images-api.nasa.gov',
namespace: 'search?',
urlForQuery (query, modelName) {
return `${this.host}/${this.namespace}`;
}
});
My serializer (serializers/image):
import DS from 'ember-data';
import { underscore } from '@ember/string';
export default DS.JSONAPISerializer.extend({
keyForAttribute(attr, method) {
return underscore(attr);
},
normalizeResponse (store, primaryModelClass, payload, id, requestType) {
payload.data = payload.collection.items.map((image) => {
let dataAttributes = image.data[0];
return {
id: image.data[0].nasa_id,
type: 'image',
attributes: dataAttributes,
}
});
return this._super(store, primaryModelClass, payload, id, requestType);
}
});
If anyone can shed some light that would be most appreciated.
Cheers