Ich habe eine Aurelia Web App, die einen Künstler nach Namen sucht und dann alle Kunstwerke vom Künstler zurückgibt. Die json vom Künstler Suche ergab sieht wie folgt aus:Aurelia - Kombinieren Sie Json aus zwei API-Calls zu einem
{
"source": "Museum",
"language": "EN",
"resultsCount": 1,
"objects": [
{
"objectNumber": "125.1988",
"objectID": 981,
"title": "Governor's Palace (Raj Bhaven) project, Chandigarh, India",
"displayName": "Le Corbusier (Charles-Édouard Jeanneret)",
"alphaSort": "Le Corbusier (Charles-Édouard Jeanneret)",
"artistID": 3426,
"displayDate": "French, born Switzerland. 1887–1965",
"dated": "1951–1976",
"dateBegin": 1951,
"dateEnd": 1976,
"medium": "Wood, cardboard, and plexiglass",
"dimensions": "33 x 71 1/4 x 65\" (83.8 x 181 x 165.1 cm)",
"department": "Architecture & Design",
"classification": "A&D Architectural Model",
"onView": 0,
"provenance": "",
etc....
Der vollständige json hier:
https://github.com/smoore4moma/tms-api/blob/master/object.json
Das Problem, das ich habe, ist, dass der Künstler suchen mehrere Künstler mit dem ähnlichen zurückkehren Namen ("Serra" zum Beispiel gibt Richard Serra und Daniel Serra-Badué zurück). Also kann ich die Suche wiederholen und die API zweimal aufrufen, um die Kunstwerke zu bekommen, aber ich habe keine Möglichkeit gefunden, die zwei verschiedenen API-Aufrufe zu kombinieren, jedenfalls nicht mit Aurelia. Hier ist ein Codeausschnitt von dem, was ich versuche zu tun. Ich habe versucht jQuery, .Extend, .Concat, .Push, Erstellen von Arrays, Wörterbuch .... Ich bin nur stecken.
getByConstituentId(id) {
return this.http.fetch(baseUrl + "/artists/" + id + token)
.then(response => response.json())
.then(response => {
return response.objects;
});
}
// This is not the actual looping code. But the idea is to combine these two function calls into one result and return that.
getBySearchTerms(searchCreator) {
let obj0 = this.getByConstituentId(5350);
let obj1 = this.getByConstituentId(5349);
return ??? // This is where I am looking for help.
// just for ex. "return this.getByConstituentId(5349);"
// works just fine
}
Irgendwelche Ratschläge, wie man das macht? Ansonsten werde ich eine API-Methode erstellen, die ein Array von Interpreten-IDs verwendet, aber ich würde lieber einfache API-Methoden verwenden und json dort kombinieren, wo sie benötigt werden. Vielen Dank.
FOLLOW-UP
@Tomalak Beratung Dies ist nach schließlich, was funktioniert hat:
return Promise.all([
this.getByConstituentId(5349),
this.getByConstituentId(5350)])
.then(response => {
return response[0].concat(response[1]);
});
Bitte keine Screenshots des Codes, die keinen Sinn machen. – Tomalak
Ich sehe ständig Kommentare darüber, dass keine URLs gepostet werden, weil es sich irgendwann in einen toten Link verwandeln könnte ... also was ist es? – smoore4
Postleitzahl als Text, offensichtlich. – Tomalak