2017-01-30 1 views
2

J'essaie de faire une demande POST en plusieurs parties à mon API en utilisant superagent.Comment envoyer un objet avec un fichier joint dans une demande de superagent Multipart?

Mon code:

superagent 
    .post(apiUrl + '/api/company/profile/edit') 
    .field("profileData", profileData) 
    .attach('company_logo', logoFile) 
    .set('Accept', 'application/json') 
    .end(function(err, res){ 
    if(err){ 
     dispatch(updateProfileStatusAction("error", res)); 
    } else { 
     dispatch(updateProfileStatusAction("success", res)); 
    } 
    }); 

Le problème que j'ai est que profileData est un objet qui est imbriqué. Quand je reçois la demande dans l'API, je vois la valeur de profileData comme la chaîne [Object, Object]

Quand je regarde la documentation de la demande multipart avec superagent https://visionmedia.github.io/superagent/#multipart-requests il apparaît comme le .field() est censé être juste une clé, une paire de valeur plutôt alors un objet. J'ai alors essayé d'employer .send ({profileData: profilData}) au lieu du champ, mais quand je fais cela j'obtiens une erreur en disant que .attach et .send ne peuvent pas être utilisés ensemble dans la même demande.

Répondre

1

Je pense qu'il devrait suffire d'utiliser JSON.stringify() pour convertir JS_Object en une chaîne JSON.

superagent 
.post(apiUrl + '/api/company/profile/edit') 
.field("profileData", JSON.stringify(profileData)) 
.attach('company_logo', logoFile) 
...