javascript - Sträng blev ett objekt när den skickades från klient till nodeJS
Jag använder yeoman angular-fullstack för att generera mitt projekt. Så klienten är angularJs (TypeScript) och backend är nodeJs. Problemet är att jag har en variabel och när jag skriver ut den till konsolen får jag en mycket lång sträng (om du behöver veta är det en photo_reference från googleplacesapi). Och när jag skickar den med en http.get till nodeJS API:et och skriver ut den till loggen får jag svaret [object Object].
MainController
for (var photo of response.data.result.photos) {
this.getImages(photo);
console.log(photo.photo_reference);
}
getImages(photo_reference: string): void{
this.$http.get('/api/image/' + photo_reference).then((response) => {
});
}
NodeJs
export function show(req, res) {
console.log("photoreference:" + req.params.photoreference);
Svar #1
Du skickar fel värde till getImages-funktionen. Eftersom argumentet som skickas till getImages har en photo_reference-egenskap är det ett objekt, så loggningen är korrekt
skicka photo.photo_reference till funktionen
for (var photo of response.data.result.photos) {
this.getImages(photo.photo_reference);
}
Svar #2
console.log kommer att anropa .toString() på alla objekt du skickar till det. Standardimplementeringen av toString() för vanliga Objects är att returnera "[Object object]", vilket är dumt men ändå praktiskt generiskt.
Om du vill se objektets fullständiga struktur, stringify det:
console.log(JSON.stringify(req.params.photoreference));
Du kan be JSON.stringify att göra en människoläsbar version, med 2 mellanslag för indrag:
console.log(JSON.stringify(req.params.photoreference, null, 2))
